Пыха всегда с тобой

Добро пожаловать на Пыху!

Логин:
Пароль:
 

Нет прописки? Зарегистрируйся!

Новости

Пыха переехала на новый сервер, ура!

Краснодарское время: 26 Май, 2012, 03:08:26

Страниц: [1]
Печать
Автор Тема: Организация связей между таблицами БД MySQL  (Прочитано 850 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
Vans    ↓ 
27 Февраль, 2010, 03:22:35
НЕ ХУЕТА! ХУЕТА!

Карма: 0
Сообщений: 8
Сила слова: 0

Имеется база данных телефонов mob, в ней необходимо сохранить следующие данные:
1. Производитель
2. Модель телефона
3. Стандарт GSM/CDMA
4. Тип аккумулятора
5. Наличие FM-радио
6. К-во цветов
 
Производитель и GSM/CDMA-стандарты должны быть вынесены в отдельные таблицы с типами связей "один ко многим" и "многие ко многим" соответственно.
 
В практической реализации я это вижу так(пока что без связей):
 
SQL

CREATE TABLE `mob`.`phones` (
`pone_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`model` VARCHAR( 30 ) CHARACTER SET cp1251 COLLATE cp1251_general_ci NOT NULL ,
`accum_type` VARCHAR( 20 ) CHARACTER SET cp1250 COLLATE cp1250_general_ci NOT NULL ,
`fm_radio` BOOL NOT NULL ,
`colors` INT NOT NULL
) ENGINE = MYISAM ;
 
CREATE TABLE `mob`.`manufacturer` (
`man_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`man_name` VARCHAR( 20 ) CHARACTER SET cp1250 COLLATE cp1250_general_ci NOT NULL
) ENGINE = MYISAM ;
 
CREATE TABLE `mob`.`standarts` (
`st_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`st_name` VARCHAR( 10 ) CHARACTER SET cp1250 COLLATE cp1250_general_ci NOT NULL
) ENGINE = MYISAM ;
 
 

Вопрос к вам, сведущие специалисты: как организовать выше описанные связи между этими таблицами?
Теории я начитался вдоволь, но понятной для меня реализации связей на практике не нашёл(может, плохо искал :( ).
Записан

Данная эксклюзия является подмножеством астрациональных супремативных монотенных федоний кадонарного экстрафазория.
Nyaah    ↓ 
27 Февраль, 2010, 03:49:58 , спустя 27 минут 23 секунды
НЕ ХУЕТА! ХУЕТА!

Группа: Джедаи

Карма: 34
Сообщений: 522
Сила слова: 6.51

В смысле связи? добавь столбцы manufacturer_id и standart_id в таблицу phones
Если хочешь юзать триггеры и внешние ключи, то тип таблиц поменяй с MyISAM на InnoDB
 
А чем ты руководствовался, когда сделал отдельную таблицу для стандартов (которых от силы десяток на территории бывшего ссср наберётся), а тип аккумулятора и кол-во цветов запихал в таблицу телефонов? =)
 
Кодировка - сделай одинаковую для всех тектовых полей.
Индексы -  добавь индексы для столбцов по которым будет производиться поиск/сортировка.
 
Я за UTF-8! =)
Записан

Work, buy, consume, die
Vans    ↓ 
27 Февраль, 2010, 05:30:28 , спустя 1 час 40 минут 30 секунд
НЕ ХУЕТА! ХУЕТА!

Карма: 0
Сообщений: 8
Сила слова: 0

Спасибо за ответ! Уже исправил БД в соответствии с Вашими замечаниями.
Теперь ещё один вопрос: можно ли сделать так, чтобы записи из таблицы manufacturer(man_id) и записи из таблицы standarts(st_id) автоматически попадали в основную таблицу phones в соответствующие им поля(manufacturer_id и standart_id)? Если да, то как?
Записан

Данная эксклюзия является подмножеством астрациональных супремативных монотенных федоний кадонарного экстрафазория.
adw0rd    ↓ 
27 Февраль, 2010, 05:32:52 , спустя 2 минуты 24 секунды
НЕ ХУЕТА! ХУЕТА!

эдво
Группа: в ухо

Карма: не нужна
Сообщений: 17634
Сила слова: 1.67

типы акк и цвета надо точно в отдельные таблицы.
Спустя 1 минуту 45 секунд добавил
автоматически попадали в основную таблицу phones
что вы подразумеваете под этим? Почему они вообще должны автоматически добавляться? По каким признакам необходимо понимать какой man_id/st_id должен быть добавлен в phones?
Записан

Python, Django, Git, Emacs, Nginx, MySQL, SphinxSearch, FreeBSD/Linux
Мой блог * Кинсбург * Либург * Я на GitHub
Страниц: [1]
Печать
 

Перейти в: