1

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

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

тут спілкуються українці (серед них є програмісти)
https://discord.gg/Zk29v4P

2

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

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

3

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

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

4

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

koala написав:

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

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

тут спілкуються українці (серед них є програмісти)
https://discord.gg/Zk29v4P

5

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

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

Junior Django Developer

6

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

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

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

7 Востаннє редагувалося Blast (18.05.2014 08: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 наприклад фантастика і т.д

Junior Django Developer

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

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

А якщо

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

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

МАКЕ ЦКЯАІИЕ БЯЕАТ АБАІИ

9

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

quez написав:

А якщо

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

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

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

Junior Django Developer

10

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

Panda написав:

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

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

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

МАКЕ ЦКЯАІИЕ БЯЕАТ АБАІИ

11

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

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

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

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

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

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

Junior Django Developer

12

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

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

МАКЕ ЦКЯАІИЕ БЯЕАТ АБАІИ

13

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

quez написав:

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

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

Junior Django Developer

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: Якщо ви думаєте, що такого не може бути, що змушує вас так думати?

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

Junior Django Developer

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

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

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

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

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

aito_incerement

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

МАКЕ ЦКЯАІИЕ БЯЕАТ АБАІИ

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

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

quez написав:

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

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

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

aito_incerement

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

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

Junior Django Developer

18

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

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

Junior Django Developer

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-чистіший код . (Те що я для себе вияснив)

Junior Django Developer