Как лучше оформить БД?

Модератор: Модераторы

Как лучше оформить БД?

Сообщение McLion » 23.10.2015 16:30:45

Всем привет,

хочу вот что сделать и завис что то... правда я чайник в БД вообще. :mrgreen:

Короче выбираешь телефонный код в ComboBox, высвечивается вторая ComboBox со странами, выбрал страну (напр. Россия) и тут моя проблема, нужно показать в третьей ComboBox города только из России.

Я прикрепил как я это бы сделал, но сомневаюсь, правильно ли. Подскажите. Благодарен!
Вложения
ScreenshotDB1.png
ScreenshotDB1.png (4.14 КБ) Просмотров: 20796
Аватара пользователя
McLion
постоялец
 
Сообщения: 332
Зарегистрирован: 06.02.2015 18:41:00

Re: Как лучше оформить БД?

Сообщение pupsik » 23.10.2015 16:50:05

страна связана с идентификатором кода
города связаны с идентификатором страны.

Или я что то не то понял?! :)
pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13

Re: Как лучше оформить БД?

Сообщение SSerge » 23.10.2015 16:52:01

Что-то не понял задачи.
Имеют смысл связки:

ТелефонныйПрефикс+Город (Это если допускаем внутреннюю российскую нумерацию, она кстати с международной не совпадает)
ТелефонныйПрефикс+Страна
ТелефонныйПрефикс+Страна+Город

А то, что вы соорудили, как-то бессмысленно.

Добавлено спустя 2 минуты 58 секунд:
Имеется в виду, что незыблемая часть, по которой должно быть совпадение - это именно телефонный префикс. Он первичен. А не страна, и не город. ))
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Re: Как лучше оформить БД?

Сообщение McLion » 23.10.2015 17:16:03

Ладно, давайте по иному.... есть некий завод. Клиент выбирает в начале его, это важно. Потом он выбирает страну где этот завод находится, и когда и он выбрал страну - в комбобоксе показываются города только из этой страны. Как это сделать?
Вложения
ScreenshotDB2.PNG
ScreenshotDB2.PNG (4.19 КБ) Просмотров: 20781
Аватара пользователя
McLion
постоялец
 
Сообщения: 332
Зарегистрирован: 06.02.2015 18:41:00

Re: Как лучше оформить БД?

Сообщение vitaly_l » 23.10.2015 18:03:06

Я бы рекомендовал использовать не комбо а таблицу из трёх колонок. При нажатии в первой колонке, меняется содержимое второй колонки, при нажатии во второй колонке меняется содержимое третьей колонки. при нажатии в третьей колонке выводится результат.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Как лучше оформить БД?

Сообщение McLion » 23.10.2015 18:06:57

vitaly_l писал(а):Я бы рекомендовал использовать не комбо а таблицу из трёх колонок. При нажатии в первой колонке, меняется содержимое второй колонки, при нажатии во второй колонке меняется содержимое третьей колонки. при нажатии в третьей колонке выводится результат.


Ну это уже дизаин интерфейса, а вот как БД правильно написать?
Аватара пользователя
McLion
постоялец
 
Сообщения: 332
Зарегистрирован: 06.02.2015 18:41:00

Re: Как лучше оформить БД?

Сообщение vitaly_l » 23.10.2015 18:13:20

Меня слово: оформить - сбило с толку. Такую базу просто сделать.
делаете три таблицы или одну таблицу (если экономите) в которых, есть колонки:

1) | id | title | visible | - это для первой колонки
2) | id | title | parent_id | visible - это для второй колонки
2) | id | title | parent_id | visible - это для третьей колонки

visible - это на случай если нужно будет отключать.

А потом простые MySQL запросы на каждый клик, типа:
Код: Выделить всё
SELECT  `id`,`title` FROM `chaild_table` WHERE `id` = `parent_id` ORDER BY `title` ABS
Последний раз редактировалось vitaly_l 23.10.2015 18:27:44, всего редактировалось 1 раз.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Как лучше оформить БД?

Сообщение McLion » 23.10.2015 18:25:49

Хм... а как эти 3 таблицы между собой связаны?
Аватара пользователя
McLion
постоялец
 
Сообщения: 332
Зарегистрирован: 06.02.2015 18:41:00

Re: Как лучше оформить БД?

Сообщение vitaly_l » 23.10.2015 18:37:13

McLion писал(а):Хм... а как эти 3 таблицы между собой связаны?

Можно даже одну таблицу, а связаны между собой:
1) id - это должно назначаться автоинкремент-ом 1,2,3,4,5,6,7 ... etc/
2) второй соединяющий параметр это parent_id.
например город N имеет id = 1, а город NN имеет id = 2; и в них по 3 завода, соответственно:
1) таблица выглядит:
| 1 | город-N | 1 |
| 2 | город-NN | 1 |
2) таблица выглядит:
| 1 | завод-1| 1 | 1
| 2 | завод-2| 1 | 1
| 3 | завод-3| 1 | 1
| 4 | завод-1| 2 | 1
| 5 | завод-2| 2 | 1
| 6 | завод-3| 2 | 1

соответственно, запрос для первого и второго выглядят так:
Код: Выделить всё
1) SELECT  `id`,`title` FROM `chaild_table` WHERE '1' = `parent_id` AND `visible` = 1 ORDER BY `title` ABS
2) SELECT  `id`,`title` FROM `chaild_table` WHERE '2' = `parent_id` AND `visible` = 1 ORDER BY `title` ABS


по аналогии и третью таблицу подключаете.


.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Как лучше оформить БД?

Сообщение pupsik » 24.10.2015 11:52:15

У вас, если не ошибаюсь, "один ко многим".
Т.е.
главная - table_country. Подчиненная - table_code.
В главной (поле table_code_tcnp) хранятся ссылки на подчиненную (поле tcpnp).
Аналогично и в table_city с table_country.

п.с.
Можно даже одну таблицу
будет избыточно. Да и логика базы упадет.
McLion судя по скрину вы попытались реализовать "Много ко многим". Что в данном варианте не кошерно. Т.е. не верно.
Вложения
BD.png
pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13

Re: Как лучше оформить БД?

Сообщение vitaly_l » 24.10.2015 12:38:53

pupsik писал(а):будет избыточно. Да и логика базы упадет.

Никто и не спорит, я просто сказал что так можно (но делать необязательно).

А вот у меня другой вопрос: А где это Вы скриншоты базы данных в виде нодов делаете? Это какой компонент позволяет так делать?


.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Как лучше оформить БД?

Сообщение pupsik » 24.10.2015 14:29:23

vitaly_l так делать не надо. НИКОГДА. Т.е. это фарш получится (для котлет - норм, а вот для бд -нет).
Я делал в "DBDesigner 4"
pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13

Re: Как лучше оформить БД?

Сообщение vitaly_l » 24.10.2015 14:54:52

pupsik писал(а):Т.е. это фарш получится

Я бы не стал, так уж сразу "фарш для котлет"... например есть движок: "word press" - там на этом принципе "одной таблицы" - СПЕЦИАЛЬНО организована база, т.к. это позволяет сделать наиболее универсальную базу, в которой одна таблица "на все случаи жизни", но это сделано, с той целью, что код там пишут 1 000 000 человек, и если они разведут 1 000 000 таблиц, то движок не справится и будут конфликты. А когда таблица одна, то она ограничивает полёт мысли изобретателей и сохраняет структуру движка. При этом, MySQL - вполне справляется. И кстати, в ряде случаев, по одной таблице - быстрее искать, нежели по трём. Всё всегда зависит от задачи.

Соответственно при данной задаче: безусловно Вы правы и лучше три таблицы. Я этого и не оспариваю, а совсем наоборот.

pupsik писал(а):Я делал в "DBDesigner 4"

:roll: Спасибо!


.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Как лучше оформить БД?

Сообщение pupsik » 24.10.2015 15:00:26

Почему фарш? По логике: вот "зпихнули" вы 3 таблицы в одну. Что из этого следует? Первым делом - сопровождать такую таблицу. Вторым - размер таблицы "бухнет" минимум в 3 раза больше будет. Третье - скорость обработки данных уменьшается.

"word press" - там на этом принципе "одной таблицы"
что то вы путаете... Или конкретно: какая таблица... С WP и не только - сталкивался. Вроде не было такой каши. Может я что то упустил. Или это в плагине?
pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13

Re: Как лучше оформить БД?

Сообщение vitaly_l » 24.10.2015 15:23:06

pupsik писал(а):Или это в плагине?

Это как раз для плагинов и для всех записей WP. Откройте их базу посмотрите, там одна таблица на все случаи жизни.
1) И без движка, сопровождать её действительно нереально. Однако с движком всё удобно.
2) Не забывайте, что таблица - это часть базы, если три таблицы увеличиваются, то сама база бухнет больше чем когда одна.
3) Скорость обработки, очень спорный момент и нужно смотреть конкретную задачу.

.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

След.

Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

Рейтинг@Mail.ru