Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Структура базы данных

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Помогите определиться с таблицами
Dezmont
Отправлено: 24 Февраля, 2012 - 10:52:50
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Июль 2010  


Помог: 1 раз(а)




Добрый день. Составляю структуру БД, но что-то завис на 1 моменте. Огорчение
В общем есть таблицы: contragent, auto.
И думаю как лучше сделать таблицы с контактными данными. Есть пока пара вариантов.
1) Создать таблицу driver (id, fio, id_auto, p_num,d_dum,phone), contragent_contacts (id,id_contragent,fio,e_mail,work_phone,mobile_phone,birthday,note).
Как видно тут некоторые поля пересекаются. p_num - паспортные данные, d_num - данные водительского удостоверения. В таблице contragent_contacts паспортные данные могут появиться позже, а могут вообще не появиться.

2) Создать таблицу individual в которой указать все поля, которые перечислены в таблицах driver & contragent_contacts. И для данных, которых нет, записывать NULL. Соответственно может возникать куча ячеек со значениями NULL. Не знаю на сколько это корректно. =/
И создать таблицы driver (id,id_individual,id_auto), contragent_contacts (id,id_individual,id_contragent).

Мне кажется 2-ой вариант предпочтительнее, потому что в дальнейшем возможно будут возникать ещё таблицы типа driver и contragent contact. Но смущает высокая плотность ячеек с NULL значениями.
И, соответственно, если будет использоваться 2 вариант, то количество записей в таблице individual будет намного больше.

В общем не так давно начал разбираться в проектировании БД, так что пока не всё понимаю. Подскажите пожалуйста, если кто знает какой-вариант лучше.
 
 Top
EuGen Администратор
Отправлено: 24 Февраля, 2012 - 11:31:49
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Dezmont
Сформируйте список сущностей, которые отвечают желаемой модели. Судя по описанию, у Вас они такие:
0. Конграгенты
1. Автомобили
2. Водители

Верно? Опишите логическую связь сущностей (если я что-то упустил, добавьте) - и тогда можно будет спроектировать БД в соответствии с требованиями бизнесс-процессов.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Dezmont
Отправлено: 24 Февраля, 2012 - 12:23:40
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Июль 2010  


Помог: 1 раз(а)




EuGen
3. Контактные лица.

Вот у меня то и заключается загвоздка в том, что сущности Контактные лица и Водители можно объединить в одну - Физические лица. А потом создавать таблицы связей для этих сущностей.
Может я конечно через чур глобально подхожу, но, мне кажется, потом проще будет изменять БД, если появится, например, таблица director, workers похожие на таблицы contacts и drivers.
Т.е. эти таблицы могут пересекаться друг с другом более чем на 50%, а где-то вообще необходимо будет только 1 или 2 дополнительных свойства.

P.S. Может конечно я не совсем верно трактую понятие сущности...
 
 Top
EuGen Администратор
Отправлено: 24 Февраля, 2012 - 12:45:41
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Dezmont пишет:
сущности Контактные лица и Водители можно объединить в одну

Тогда поясните, что такое - водители и что такое - контактные лица?
Обрисуйте решаемую задачу так, чтобы можно было проследить четкие логические связи между сущностями а так же функции каждой из них.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Dezmont
Отправлено: 24 Февраля, 2012 - 13:02:51
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Июль 2010  


Помог: 1 раз(а)




Создаётся БД транспортной компании.
1. Таблица Автомобили с данными об авто.
2. Контрагенты - банковские реквизиты Юр.лица (либо ИП)
3. Водители (связь с таблицей автомобили)
4. Контакты (связь с таблицей контрагентов)
5. Заявки: id_contragent,id_driver.

Упрощённо что-то типа этого. Ещё думаю куда запихать данные о Директорах для Контрагентов. Создавать новую таблицу, или громоздить дополнительные столбцы в таблице контрагенты.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с СУБД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB