2015-03-04 2 views
0

У меня есть две таблицыКак связать две реляционные таблицы в MYSQL

  1. Видео (v_id, v_duration, v_status, UPLOAD_DATE) в видео таблице первичный ключ v_id.
  2. video_tags (TAG_NAME, video_id)

видео может иметь много тегов, поэтому я разделил их на две таблицы. Вопрос в том, когда я создаю эти две таблицы, используя базу данных mySQL, мне удалось создать первую таблицу, используя приведенный ниже оператор sql, создать видео в таблице (v_id int, v_duration double, v_status varchar (50) default 'требуется утверждение', upload_date DATE , первичный ключ (v_id))

, но второй я не мог из-за непонимания ссылочных ключей.

Является ли это утверждение mySQL истинным?

создать таблицу video_tags (имя_тега VARCHAR (50), video_id INT, первичный ключ (vidoe_id, tag_name))

+0

Почему Я не могу использовать video_id в качестве внешнего ключа и tag_name как первичный ключ? Я знаю его концептуальный вопрос, но я надеюсь получить для него разумный ответ. @helloworld –

+0

ваш ответ не добавляет никакого отношения между первой и второй таблицами, они становятся отключенными! –

ответ

0

Это должно работать:

CREATE TABLE `video_tags` (
`tag_id` INT NOT NULL, 
`tag_name` VARCHAR(50) NOT NULL, 
`video_id` INT NOT NULL, 
PRIMARY KEY (`tag_id`), 
INDEX `video_id` (`video_id` ASC), 
INDEX `tag_name` (`tag_name` ASC), 
CONSTRAINT `video_id_fk` 
FOREIGN KEY (`video_id`) 
REFERENCES `video` (`v_id`)) 

Используйте другой столбец в качестве первичного ключа

+0

Почему я не могу использовать video_id в качестве внешнего ключа и tag_name как первичный ключ? Я знаю его концептуальный вопрос, но я надеюсь получить для него разумный ответ. @helloworld –

+0

Это должно сработать. Ваш код не определял отношения. Вы создавали только 2 индекса. – helloworld

+0

Имя тега не может быть единственным в качестве первичного ключа, поскольку оно может повторяться для нескольких идентификаторов видео. пример: (имя_тега, video_id) ==> (Образование, 123) (сообщество, 123) (Образование, 155) –

Смежные вопросы