1

Тема: Поясніть за нормальні форми БД

Хай. Я от не пам'ятаю, задавав чи ні це питання, тому задам. Один викладач постійно нас лякає тим, що при захисті диплому один чювак із комісії може задати питання, котре звучить приблизно як "Як би ви нормалізували свою БД?" чи якось "Яка нормальна форма вашої БД за критеріями Н. Хомського", і от я зовсім не доганяю, які ще нормальні форми є і т.д. БД в мене MySQL, там всього 4 таблички та купка процедур. І от поясніть мені, що то за нормальні форми, і чому вони нормальні, і які це ненормальні форми? А то ж в мене буде супер-пупер крутий-прекрутий диплом, а в кінці мені зададуть таке питання і я зільюсь.

2

Re: Поясніть за нормальні форми БД

Я вам із радістю допоможу, коли побачу ключові фрази "я шукав в гуглі за запитами ..." та "в вікіпедії написано, що ..., але ...". А до того вважатиму, що у вас просто приступ нестачі уваги.

3

Re: Поясніть за нормальні форми БД

Нормалізація баз даних (Wikipedia)

4

Re: Поясніть за нормальні форми БД

koala написав:

Я вам із радістю допоможу, коли побачу ключові фрази "я шукав в гуглі за запитами ..." та "в вікіпедії написано, що ..., але ...". А до того вважатиму, що у вас просто приступ нестачі уваги.

та блін, в гуглі то суха інфа, а тут вона прям така з душею, ну ок, зара піду почитаю

5

Re: Поясніть за нормальні форми БД

Можливо РСУБД без повторення подібних полів і т.д .

6

Re: Поясніть за нормальні форми БД

Знаєте, я так приблизно пам'ятав, що колись я щось тут вже писав про це. Зараз таки пошукав - ви не повірите, для кого...
http://replace.org.ua/topic/1637/

Подякували: Chemist-i, Replace2

7 Востаннє редагувалося Blast (18.05.2014 07:00:01)

Re: Поясніть за нормальні форми БД

В тему до попереднього коменту  . Все просто

так як працю з консолю то так і напишу .

create table ganr (idganr int unsigned  not null aito_incerement primary key , name char(40) not null);

create table book (id int unsigned not null auto_increment primary key , idganr int unsigned not null , name char(40) not null );

Тоді для одного жанру задаєш запит

select * from book where idgrant = 5 ; 

І виведе тобі всі книги з жанорм айди 5 наприклад фантастика і т.д

8 Востаннє редагувалося quez (18.05.2014 13:02:27)

Re: Поясніть за нормальні форми БД

А якщо

insert into book (idganr, name) values (100500, 'Book')

Стільки жанрів у вас точно немає. Подумайте над зовнішнім ключем.

9

Re: Поясніть за нормальні форми БД

quez написав:

А якщо

insert into book (idganr, name) values (100500, 'Book')

Стільки жанрів у вас точно немає. Подумайте над зовнішнім ключем.

Што ? Жанрів буде від сили шт 20

10

Re: Поясніть за нормальні форми БД

Panda написав:

Што ? Жанрів буде від сили шт 20

Отож. Жанрів двадцять, а користувач помилково записав «Війну і мир» до двадцять першого. А таблиця все це прийняла, як і має бути.

Тільки от одного дня вам набридне запитувати список книг з певними жанрами, вам стане цікаво, що ж за жанр у кожної з книг. Дійшли ви до «Війни й миру» й жорстоко обламались.

11

Re: Поясніть за нормальні форми БД

quez написав:
Panda написав:

Што ? Жанрів буде від сили шт 20

Отож. Жанрів двадцять, а користувач помилково записав «Війну і мир» до двадцять першого. А таблиця все це прийняла, як і має бути.

Тільки от одного дня вам набридне запитувати список книг з певними жанрами, вам стане цікаво, що ж за жанр у кожної з книг. Дійшли ви до «Війни й миру» й жорстоко обламались.

select  ganr.name , book.name form gran , book ; З’єднання двух таблиці . ні ?

12

Re: Поясніть за нормальні форми БД

Облом полягає не в тому, що ви не зможете написати запит для того, щоб дізнатись жанр; навпаки, у вас все буде добре, ви дізнаєтесь жанри всіх книг, аж поки не дійдете до «Війни і миру». Який жанр у неї буде?

13

Re: Поясніть за нормальні форми БД

quez написав:

Облом полягає не в тому, що ви не зможете написати запит для того, щоб дізнатись жанр; навпаки, у вас все буде добре, ви дізнаєтесь жанри всіх книг, аж поки не дійдете до «Війни і миру». Який жанр у неї буде?

Шо ви несете самі розумієте ? який користувачи і куди занесе . А то тут я не вїжджаю .

14

Re: Поясніть за нормальні форми БД

Panda написав:
quez написав:

Облом полягає не в тому, що ви не зможете написати запит для того, щоб дізнатись жанр; навпаки, у вас все буде добре, ви дізнаєтесь жанри всіх книг, аж поки не дійдете до «Війни і миру». Який жанр у неї буде?

Шо ви несете самі розумієте ? який користувачи і куди занесе . А то тут я не вїжджаю .

Фу, як грубо.

У вас є дві таблиці:

create table ganr (idganr int unsigned  not null aito_incerement primary key , name char(40) not null);
 
create table book (id int unsigned not null auto_increment primary key , idganr int unsigned not null , name char(40) not null );

Питання №1: Який жанр буде у книги, у якої idganr такий, якого немає в таблиці ganr?

І питання №2: Якщо ви думаєте, що такого не може бути, що змушує вас так думати?

15

Re: Поясніть за нормальні форми БД

quez написав:
Panda написав:
quez написав:

Облом полягає не в тому, що ви не зможете написати запит для того, щоб дізнатись жанр; навпаки, у вас все буде добре, ви дізнаєтесь жанри всіх книг, аж поки не дійдете до «Війни і миру». Який жанр у неї буде?

Шо ви несете самі розумієте ? який користувачи і куди занесе . А то тут я не вїжджаю .

Фу, як грубо.

У вас є дві таблиці:

create table ganr (idganr int unsigned  not null aito_incerement primary key , name char(40) not null);
 
create table book (id int unsigned not null auto_increment primary key , idganr int unsigned not null , name char(40) not null );

Питання №1: Який жанр буде у книги, у якої idganr такий, якого немає в таблиці ganr?

І питання №2: Якщо ви думаєте, що такого не може бути, що змушує вас так думати?

По перше якщо давати можливість юзеру вибирати жанр то на прикладу слекту . Не розумію як юзер може задати книзі жанр якого немає там куди йому не дано попасти .

16 Востаннє редагувалося quez (18.05.2014 14:24:16)

Re: Поясніть за нормальні форми БД

Цей тред стає все веселішим і веселішим.

Для початку я порадив би вам користуватись комами і перечитувати повідомлення. Що таке «слекту», я зрозумів лише завдяки гуглу. Але й так мені вдалося уловити лише приблизний сенс.

Наскільки я зрозумів, ви обмежите користувача, і він буде вибирати лише серед жанрів, доданих вами. Це цілком логічно. Але чому ви не можете допустити в коді помилку, внаслідок якої поле жанру одержить невірний номер? Ні, я може й повірив би, що ви її не допустите, але після оцього

aito_incerement

я просто впевнений, що їх у вас буде достатньо.

17 Востаннє редагувалося Blast (18.05.2014 17:40:59)

Re: Поясніть за нормальні форми БД

quez написав:

Цей тред стає все веселішим і веселішим.

Для початку я порадив би вам користуватись комами і перечитувати повідомлення. Що таке «слекту», я зрозумів лише завдяки гуглу. Але й так мені вдалося уловити лише приблизний сенс.

Наскільки я зрозумів, ви обмежите користувача, і він буде вибирати лише серед жанрів, доданих вами. Це цілком логічно. Але чому ви не можете допустити в коді помилку, внаслідок якої поле жанру одержить невірний номер? Ні, я може й повірив би, що ви її не допустите, але після оцього

aito_incerement

я просто впевнений, що їх у вас буде достатньо.

Роблю все як книжка пише а там пише . Чим менше користувач має прав для того чи іншого тим вам краще , це по перше , по друге select повністю справиться з цим завданням . Колись чув про реляційну бд ?

18

Re: Поясніть за нормальні форми БД

Вмене помилки тільки з крапками і комами , прсто складних проектів не писав . А так задоволений своїм кодом "На костилях і хардкорі "

19

Re: Поясніть за нормальні форми БД

Panda написав:

Роблю все як книжка пише а там пише . Чим менше користувач має прав для того чи іншого тим вам краще , це по перше , по друге select повністю справиться з цим завданням .

Так що я, сперечаюсь? Чим менше, тим краще.

Panda написав:

Колись чув про реляційну бд ?

Ні, розкажи, дуже цікаво.

20

Re: Поясніть за нормальні форми БД

quez написав:
Panda написав:

Роблю все як книжка пише а там пише . Чим менше користувач має прав для того чи іншого тим вам краще , це по перше , по друге select повністю справиться з цим завданням .

Так що я, сперечаюсь? Чим менше, тим краще.

Panda написав:

Колись чув про реляційну бд ?

Ні, розкажи, дуже цікаво.

http://ru.wikipedia.org/wiki/%D0%A0%D0% … 1%8B%D1%85 Я хз як в двох словах пояснити  . Писати бд без надлишку полів які можна використовувати і в інших таблицях . 1-Швидше 2-Менше проблем 3-чистіший код . (Те що я для себе вияснив)