Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.61/57: Рейтинг темы: голосов - 57, средняя оценка - 4.61
 Аватар для Ameli
2096 / 1172 / 39
Регистрация: 05.11.2009
Сообщений: 1,605

О разработке структуры базы данных (для начинающих) (обсуждение статьи)

01.02.2012, 12:01. Показов 12258. Ответов 65
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Предлагаю обсудить здесь "статью", давайте ее откорректируем, дополним, и будет нормальное пособие для начинающих о том, с чего начать, как правильно построить структуру бд, на что следует обратить внимание в первую очередь. Потому как такие вопросы на форуме задаются очень часто.
3
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.02.2012, 12:01
Ответы с готовыми решениями:

Книга для начинающих изучать базы данных
Неспешно пишу книгу, для начинающих изучать базы данных. Упор сделан в основном на практику, чтобы в кратчайшие сроки читатель смог...

Совет в разработке интерфейса базы данных
Тема курсовой роботы: Рейтинг литературы. Первый вопрос: поскольку каждая книга имеет право быть написанной сразу несколькими...

Статьи из базы данных
всем привет,сейчас делаю свой блог на php и дело дошло до того,что мне нужно было сделать вывод статей из базы данных,поначалу все было...

65
763 / 270 / 57
Регистрация: 13.12.2009
Сообщений: 1,110
01.02.2012, 14:33
очень помогает если структура выполнена на языке UML. Это дает в короткий срок создать и проверить всю структуру сразу и если нужно внести изменения.
0
0 / 0 / 0
Регистрация: 18.12.2011
Сообщений: 110
08.02.2012, 14:06
https://www.cyberforum.ru/atta... 1328068610

Вот третья картинка. Там в квадратиках что-то написано, но совершенно не читается.

Что такое Бойс-Кодд? Я просто не знаю, а в статье есть.

Тема нужная. Полезная. Огромное спасибо.
Буду свою базу переделывать под "как надо".

Если что в голове еще всплывет, то дополнительно отпишусь.
0
 Аватар для Ameli
2096 / 1172 / 39
Регистрация: 05.11.2009
Сообщений: 1,605
09.02.2012, 20:02  [ТС]
диаграмму3 вложила еще раз
Нормальная форма Бойса-Кодда названа так в честь Рэя Бойса и Эдгара Кодда, ее описание есть в статье в частности, и в интернете в целом
0
0 / 0 / 0
Регистрация: 18.12.2011
Сообщений: 110
18.02.2012, 02:37
Ameli

Знаю, что вопрос глупый, но всё же.
Все элементы внутри атомарны (неделимы), т.е. не списки
Исходя из первого правила статьи.
Скажите пожалуйста, а уход от этого пункта чем чреват?

/ мне просто или воспользоваться уже найденным (данным) решением своей проблемы или по-новой тему создавать, поскольку многое в логике таблицы меняется тогда.
0
 Аватар для Ameli
2096 / 1172 / 39
Регистрация: 05.11.2009
Сообщений: 1,605
18.02.2012, 10:55  [ТС]
Если имеются в виду поля со списком с множеством значений в 2007 аксессе и выше, то их можно использовать, разделить значения потом в них можно при желании.
Здесь имеется в виду, что в одном поле не должно быть записано через запятую несколько значений, как потом изъять оттуда каждое из них? как потом задействовать в связях это поле?
1
2643 / 1342 / 256
Регистрация: 25.10.2010
Сообщений: 2,196
29.02.2012, 14:37
Ameli, добрый день
Хочу уточнить несколько моментов:
1)
Цитата Сообщение от Ameli Посмотреть сообщение
Все элементы внутри атомарны (неделимы), т.е. не списки
А если в одном поле записаны Фамилия Имя Отчество? Я всегда думала, что это тоже не соответствует 1НФ

2) В примере по второй НФ: получается, что две итоговые (нормализованные) таблицы связаны "многие-ко-многим"?

И еще, на мой взгляд, для начинающих было бы полезно дать четкое понятие "первичный ключ", "внешний ключ"
0
 Аватар для Ameli
2096 / 1172 / 39
Регистрация: 05.11.2009
Сообщений: 1,605
29.02.2012, 14:49  [ТС]
Цитата Сообщение от Pelena Посмотреть сообщение
Я всегда думала, что это тоже не соответствует 1НФ
ФИО лучше хранить раздельно, это беспорно, но тем не менее, их совмещение в одно поле не противоречит 1НФ. Здесь имеются в виду, чтоб не было именно списков, если есть список, то его надо вынести в отдельную таблицу.
Цитата Сообщение от Pelena Посмотреть сообщение
2) В примере по второй НФ: получается, что две итоговые (нормализованные) таблицы связаны "многие-ко-многим"?
Я не так выразилась, нужна конечно еще одна таблица Предметы, исправляю
Цитата Сообщение от Pelena Посмотреть сообщение
для начинающих было бы полезно дать четкое понятие "первичный ключ", "внешний ключ"
Абсолютно согласна, я уже думала дописать, все никак не соберусь.
Pelena, спасибо за комментарии, возможно вам тоже есть, что сказать
1
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,375
01.03.2012, 06:42
Цитата Сообщение от Ameli Посмотреть сообщение
ФИО лучше хранить раздельно,
А я могу сказать, что лучше вместе Во всех моих задач именно вместе. Так что лучше здесь точно не подходит, зависит от задачи, список абонентов или поле директора предприятия.
0
 Аватар для Ameli
2096 / 1172 / 39
Регистрация: 05.11.2009
Сообщений: 1,605
01.03.2012, 08:39  [ТС]
Я придерживаюсь мнения, что, если поле можно разделить на несколько, то лучше разделить.
Может когда-то понадобится, например, Фамилия и инициалы, и придется функциями отделять фамилию из ФИО, потом отделять имя и отчество, брать первые буквы, тогда как в раздельном варианте все намного проще
0
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,375
01.03.2012, 09:27
А если не понадобится? Зачем делить? Если это сущность, единое целое? Как номер телефона например, номер телефона тоже делить будем? Вообщем я не согласен с такой постановкой.
0
2643 / 1342 / 256
Регистрация: 25.10.2010
Сообщений: 2,196
18.03.2012, 14:41
Ameli, добрый день. Спасибо за Ваше стремление помочь новичкам привести в систему знания.
По поводу статьи ПРИМЕР РАЗРАБОТКИ БД. Я не понимаю, зачем создавать такое количество таблиц с двумя полями типа КОД и НАЗВАНИЕ, почему нельзя НАЗВАНИЕ сразу поместить в связанную таблицу, особенно если оно состоит из одного слова? Это связано с тем, что повторяющиеся текстовые поля увеличивают объём БД? Или есть ещё причины?
0
 Аватар для ironegg
1905 / 782 / 31
Регистрация: 11.02.2010
Сообщений: 1,567
18.03.2012, 19:58
Цитата Сообщение от Pelena Посмотреть сообщение
есть ещё причины?
есть. нормализация данных.
например, есть таблица выплат зарплаты, включающая, кроме прочего, сумму и фамилию человека.
соответственно, фамилии повторяются каждый месяц.
теперь, допустим, кто-то вышел замуж, и фамилия изменилась. сделать выборку по этому человеку будет непросто. велика вероятность ошибки. менять фамилию во всей таблице тоже не лучшее решение.
правильно, вынести фамилию в отдельную справочную таблицу, а в таблице зарплат оставить только код сотрудника.
на этот же код, при желании, потом, в любой момент можно повесить таблицу изменения фамилий (код стараяФамилия новаяФамилия дата)
и вот, все данные под рукой в удобном виде.

впрочем, иногда прибегают и к денормализации данных. это, в некоторых случаях, позволяет существенно упростить запросы, увеличить скорость работы(особенно критично, например, для MySQL -- базы для web, обычно, сильно денормализованы и способны выполнять десятки тысяч запросов в секунду из миллионов записей). при этом ответственность за целостность данных ложиться на код пользователя. ошибки все равно просачиваются, приходиться их периодически искать и исправлять.
1
2643 / 1342 / 256
Регистрация: 25.10.2010
Сообщений: 2,196
18.03.2012, 20:22
Ну, хорошо. Это если теоретически возможны какие-то изменения, а если это названия дней недели, должностей, ученых званий, видов отчетности и т.д. Я понимаю, например, сделать отдельные таблицы для дальнейшей подстановки, но зачем их включать в связи? Это ж такая паутина в схеме данных получается, что новичок запутается в ней как муха
0
 Аватар для ironegg
1905 / 782 / 31
Регистрация: 11.02.2010
Сообщений: 1,567
18.03.2012, 21:02
про дни недели никто не говорит. храните их в нужных местах в виде цифр 0-6 (или, что по сути то же самое, как набор значений)
Цитата Сообщение от Pelena Посмотреть сообщение
новичок запутается в ней как муха
для новичков есть простые БД из трех таблиц. а вот в бд посложнее, на каком-то этапе, начинаешь понимать, что денормализация - это зло. я не сильно опытный базостроитель, но ведь проскакивали темы на форуме. конфигурация данных вроде простая, но не заточена под новый требующийся функционал, в дело идут сложные запросы, которые получаются read-only... и понеслось.
само собой, на VBA можно загнуть все что угодно. только дорого это
1
 Аватар для Ameli
2096 / 1172 / 39
Регистрация: 05.11.2009
Сообщений: 1,605
18.03.2012, 21:30  [ТС]
Цитата Сообщение от Pelena Посмотреть сообщение
Или есть ещё причины?
Это делается для гибкости бд, чтоб можно было вносить изменения в подстановки. Те же дни недели могут быть разными, например, воскресенье для каких-нибудь заочников. Вид недели - числитель/знаменатель - может называться по-другому, например, верхняя/нижняя. Про должности и ученые звания я вообще молчу, это ж для примера введены какие-то значения. Пользователи откроют бд и сразу увидят, куда внести изменения, если будут справочники по этим таблицам, а так придется вникать в структуру, искать подстановки
1
2643 / 1342 / 256
Регистрация: 25.10.2010
Сообщений: 2,196
18.03.2012, 21:52
То есть это делается с учетом дальнейших изменений, которые могут понадобиться? А также чтобы человек, которому БД досталась "по наследству" мог в ней легко разобраться? Понятно

Цитата Сообщение от ironegg Посмотреть сообщение
денормализация - это зло
В чем денормализация, если вместо повторяющихся кодов будут повторяющиеся слова?
0
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,375
19.03.2012, 04:52
Цитата Сообщение от Ameli Посмотреть сообщение
Это делается для гибкости бд, чтоб можно было вносить изменения в подстановки.
Вот что хочу по этому поводу сказать. Для этих целей можно сделать запрос по фактическим данным с группировкой и не надо будет строить отдельные таблицы. С теми же днями недели, для примера, представим ситуацию, что 7 (воскресенье) никогда не используется, в таком случае, при создания источника данных по факту, его и не будет в списке, что кстати является ещё одним плюсом при той же выборке для отчётности. Зачем давать возможность выбора воскресенья, когда по нему нет ни одной записи?
В целом нормализации вещь хорошая и правильная, но переусердствовать с ней не нужно. Всё зависит от конкретной ситуации и конретного техзадания. Контора с пятью сотрудниками не нуждается в справочнике адресов КЛАДР для зарплаты, что не скажешь об организации из 15 000 человек. И т.д. и т.п.
Могу привести примеры когда нормализация - зло, если у кого-то есть желание.
1
39 / 39 / 0
Регистрация: 02.03.2012
Сообщений: 91
19.03.2012, 09:49
Я как и alvk придерживаюсь разумности в подходе к конкретным задачам и ограничениям, а не точного следования всем заповедям Дейта и других гуру. Из личного своего опыта (с начала 80-х годов) изменения простой БД под новые задачи всегда дешевле разработки всеобъемлющих структур для всех будущих и настоящих целей. Желательно было бы показать новичкам на примере КАК это делается, напрмер, на тех же ФИО в одном поле или в разных полях, с таблицей БД или полем со коротким списком.
1
 Аватар для Ameli
2096 / 1172 / 39
Регистрация: 05.11.2009
Сообщений: 1,605
19.03.2012, 10:23  [ТС]
alvk, запрос с группировкой построить конечно можно, а вот внести изменения в значения нельзя, именно для этого эти таблички и были созданы, для универсальности базы.
Цитата Сообщение от alvk Посмотреть сообщение
В целом нормализации вещь хорошая и правильная, но переусердствовать с ней не нужно. Всё зависит от конкретной ситуации и конретного техзадания.
Я абсолютно с тобой согласна, никто и не говорит, что надо втупую следовать правилам, здесь речь идет о практической приспособленности. Как показывает практика (моя), лучше сразу сделать такие таблички, а то потом придется доделывать.
Цитата Сообщение от В.В.С. Посмотреть сообщение
Желательно было бы показать новичкам на примере КАК это делается, напрмер, на тех же ФИО в одном поле или в разных полях, с таблицей БД или полем со коротким списком
Все в одну статью не влепишь, тем более про ФИО в разных полях и в одном поле уже не раз обсуждалось на форуме.

Все, кто отписались в этой теме, думаю, вам тоже есть что сказать, выберите какой-то вопрос, в котором хорошо разбираетесь, и часто обсуждается на нашем форуме, и вперед!
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.03.2012, 10:23
Помогаю со студенческими работами здесь

Скрипт для переноса структуры таблиц базы данных клиенту
Здравствуйте! У меня MSSQL Server 2012. Подскажите, как мне создать скрипт для переноса структуры моей базы (достаточно только структур...

Вывод статьи по id из базы данных
Всем Доброго времени суток! Я хочу реализовать вывод 1 статьи по нажатию ссылки подробнее,примерно так <? ...

Базы данных - книги,статьи
Хочу разобраться,что это за базы данных и как их строить. Кто может посоветовать книги/статью по этому для полных профанов по БД ?

Статьи через php и базы данных
Всем привет. Я вот посмотрел на сайтах и увидел, что менюшки ссылаются на такие вот ссылки: ...

Используя синтаксис структуры составить программу для заполнения данными базы данных Рецепты
Используя синтаксис структуры составить программу для заполнения данными базы данных Рецепты со следующими полями: КодРецепта,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru