ФорумРазработкаБазы данных → Организация связей между таблицами БД MySQL

Организация связей между таблицами БД MySQL

  • Vans

    Сообщения: 8 Репутация: N Группа: Кто попало

    Spritz Фев. 27, 2010, 3:22 п.п.

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

    Производитель и GSM/CDMA-стандарты должны быть вынесены в отдельные таблицы с типами связей "один ко многим" и "многие ко многим" соответственно.

    В практической реализации я это вижу так(пока что без связей):


    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

    Сообщения: 574 Репутация: N Группа: Джедаи

    Spritz Фев. 27, 2010, 3:49 п.п., спустя 27 минут 23 секунды

    В смысле связи? добавь столбцы manufacturer_id и standart_id в таблицу phones
    Если хочешь юзать триггеры и внешние ключи, то тип таблиц поменяй с MyISAM на InnoDB

    А чем ты руководствовался, когда сделал отдельную таблицу для стандартов (которых от силы десяток на территории бывшего ссср наберётся), а тип аккумулятора и кол-во цветов запихал в таблицу телефонов? =)

    Кодировка - сделай одинаковую для всех тектовых полей.
    Индексы - добавь индексы для столбцов по которым будет производиться поиск/сортировка.

    Я за UTF-8! =)
    Work, buy, consume, die
  • Vans

    Сообщения: 8 Репутация: N Группа: Кто попало

    Spritz Фев. 27, 2010, 5:30 п.п., спустя 1 час 40 минут 30 секунд

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

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz Фев. 27, 2010, 5:32 п.п., спустя 2 минуты 24 секунды

    типы акк и цвета надо точно в отдельные таблицы.
    Спустя 105 сек.
    автоматически попадали в основную таблицу phones
    что вы подразумеваете под этим? Почему они вообще должны автоматически добавляться? По каким признакам необходимо понимать какой man_id/st_id должен быть добавлен в phones?
    https://smappi.org/ - платформа по созданию API на все случаи жизни

Пожалуйста, авторизуйтесь, чтобы написать комментарий!