|
|
|
Оцените, пожалуйста, насколько грамотно спроектирована БД
|
|||
|---|---|---|---|
|
#18+
Всем доброго времени суток! Я не разработчик БД, но порой приходится одевать сию шкуру... Вот сегодня у меня как раз тот случай. В общем, мне крайне интересно было бы узнать, насколько хорошо/плохо я справился с заданием: На сайте есть курсы, есть отдельные уроки. Каждый курс/урок принадлежит какой-то категории (для курсов и уроков категории могут быть разные), вложенность категорий не ограничена Урок может быть частью курса И вот, собственно, что я сделал - http://pastebin.org/446390 (на всякий случай файл в аттаче) Заранее благодарен за все комментарии и извиняюсь, если не в тот раздел написал - мне кажется, что это все же больше подходит к "Проектированию БД", чем к абстрактному "MySQL" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2010, 01:13 |
|
||
|
Оцените, пожалуйста, насколько грамотно спроектирована БД
|
|||
|---|---|---|---|
|
#18+
Chvanikoff, было бы лучше представить схему. Так быстрее разобраться, да и вам полезнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2010, 02:10 |
|
||
|
Оцените, пожалуйста, насколько грамотно спроектирована БД
|
|||
|---|---|---|---|
|
#18+
Rin@tChvanikoff, было бы лучше представить схему. Так быстрее разобраться, да и вам полезнее.И хотя бы краткое описание таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2010, 02:13 |
|
||
|
Оцените, пожалуйста, насколько грамотно спроектирована БД
|
|||
|---|---|---|---|
|
#18+
Без проблем... http://i054.radikal.ru/1008/9d/fca997b3e829.jpg ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2010, 02:15 |
|
||
|
Оцените, пожалуйста, насколько грамотно спроектирована БД
|
|||
|---|---|---|---|
|
#18+
Описание таблиц Cources: -id -name - название курса -author - автор курса -description - описание курса -category - id категории из cources_categories Cources_Categories: -id -parent - id категории-родителя. NULL, если выше этой категории ничего нет -name - название категории -description - описание категории Lessons: -id -name - название урока -content - содержание урока -author - автор урока -description - описание урока -category - id категории из lessons_categories Lessons_Categories: -id -parent - id категории-родителя. NULL, если выше этой категории ничего нет -name - название категории -description - описание категории Lessons_Cources - описывает принадлежность того или иного урока к курсу, если id урока здесь нет, то он самостоятельный: -lesson_id -cource_id ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2010, 02:22 |
|
||
|
Оцените, пожалуйста, насколько грамотно спроектирована БД
|
|||
|---|---|---|---|
|
#18+
Я не знаком с этим средством пректирования, но предполагаю, что у таблицы Cources_Categories должна быть линия, изображающая связь таблицы с самой собой (поле parent) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2010, 10:27 |
|
||
|
Оцените, пожалуйста, насколько грамотно спроектирована БД
|
|||
|---|---|---|---|
|
#18+
ChvanikoffОписание таблиц Cources: -id -name - название курса -author - автор курса -description - описание курса -category - id категории из cources_categories Cources_Categories: -id -parent - id категории-родителя. NULL, если выше этой категории ничего нет -name - название категории -description - описание категории Lessons: -id -name - название урока -content - содержание урока -author - автор урока -description - описание урока -category - id категории из lessons_categories Lessons_Categories: -id -parent - id категории-родителя. NULL, если выше этой категории ничего нет -name - название категории -description - описание категории Lessons_Cources - описывает принадлежность того или иного урока к курсу, если id урока здесь нет, то он самостоятельный: -lesson_id -cource_id 1. Таблицы именовать не в множественном числе (Lessons -> Lesson) 2. Lessons_Categories и Cources_Categories объединить в одну таблицу с полем Type, тип int (1 - категории уроков, 2 - категории курсов) 3. Cources.author и Lessons.author нарушают нормализацию БД, надо сделать отдельную таблицу авторов (Author) с полями например id, f, i, o, а в таблицах Cources и Lessons давать ссылку на автора из таблицы Author ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2010, 10:48 |
|
||
|
Оцените, пожалуйста, насколько грамотно спроектирована БД
|
|||
|---|---|---|---|
|
#18+
17-772. Lessons_Categories и Cources_Categories объединить в одну таблицу с полем Type, тип int (1 - категории уроков, 2 - категории курсов)Сейчас уроки могут ссылаться только на категории уроков, но не на категории курсов Если автор примет Вашу рекомендацию №2, то уроки смогут ссылаться на категории курсов Считаю это неверным ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2010, 10:52 |
|
||
|
Оцените, пожалуйста, насколько грамотно спроектирована БД
|
|||
|---|---|---|---|
|
#18+
ПаганельЯ не знаком с этим средством пректирования, но предполагаю, что у таблицы Cources_Categories должна быть линия, изображающая связь таблицы с самой собой (поле parent) Не обязательно, отношение в Parent - Childs может дать сбой при удалении (типа удалите сначала другие строки, который ссылаются на эту) - придется дописывать руками код, чтобы корректно все удаляла, если не создавать связь - то в какой-то мере по логике это нарушит целостность БД, но в данном случае это не страшно - все равно все оставшиеся элементы будут отображены в экранной форме справочника, просто они будут не в группе или как то еще по другому. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2010, 10:52 |
|
||
|
Оцените, пожалуйста, насколько грамотно спроектирована БД
|
|||
|---|---|---|---|
|
#18+
Паганель Если автор примет Вашу рекомендацию №2, то уроки смогут ссылаться на категории курсов Считаю это неверным 1. Это можно ограничить в интерфейсе 2. Это можно ограничить введением в связь составного идентификатора - ИД записи из справочника и ее тип 3. А можно забить на это Минусы двух таблиц: если придется вносить изменения - их придется вносить два раза, для каждой таблицы, а потом в каждую программу, которая использует эту БД и везде тоже по два раза, стоимость сопровождения и доработки такой БД и программ увеличивается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2010, 10:55 |
|
||
|
Оцените, пожалуйста, насколько грамотно спроектирована БД
|
|||
|---|---|---|---|
|
#18+
Chvanikoff Lessons_Cources - описывает принадлежность того или иного урока к курсу, если id урока здесь нет, то он самостоятельный: -lesson_id -cource_idЕсли судить по схеме, связь между Lessons и Cources "многое-ко-многим". Если не секрет, это реальная база? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2010, 10:56 |
|
||
|
Оцените, пожалуйста, насколько грамотно спроектирована БД
|
|||
|---|---|---|---|
|
#18+
Rin@tЕсли судить по схеме, связь между Lessons и Cources "многое-ко-многим". Если не секрет, это реальная база? Могу предположить что нет, что-то вроде курсовой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2010, 11:00 |
|
||
|
Оцените, пожалуйста, насколько грамотно спроектирована БД
|
|||
|---|---|---|---|
|
#18+
17-77придется дописывать руками код, чтобы корректно все удалялаЭто решать автору Возможно, надо не удалять, а переназначать родителя В таком случае без дописывания руками имхо не обойтись 17-77если не создавать связь - то в какой-то мере по логике это нарушит целостность БД, но в данном случае это не страшнопока не попытаемся получить родителя по несуществующему id 17-77Минусы двух таблиц: если придется вносить изменения - их придется вносить два разаА если вносить изменения не придется, или придется вносить изменения, касающиеся категорий только одного типа, то минусов у двух таблиц нет 17-77Паганель Если автор примет Вашу рекомендацию №2, то уроки смогут ссылаться на категории курсов Считаю это неверным 1. Это можно ограничить в интерфейсе 2. Это можно ограничить введением в связь составного идентификатора - ИД записи из справочника и ее тип 3. А можно забить на это Вариант 1 - не верю я в обещания разработчиков интерфейса типа "у нас все под контролем" Вариант 2 - можно, но опять же автору решать Вариант 3 - даже не знаю что сказать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2010, 12:19 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=36774508&tid=1542601]: |
0ms |
get settings: |
7ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
180ms |
get topic data: |
8ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 217ms |
| total: | 488ms |

| 0 / 0 |
