我有一個實體(職業)可能與其他實體有關係的情況。與其他實體有隨機關係的實體
我可能有一個用戶有家務管理作爲一個職業,而另一個用戶有烹飪作爲一個職業,但我們必須指定他在哪個國際廚房烹飪,所以我們有X是西班牙和亞洲廚房的廚師, Y在管家。
與其他實體的條件關係取決於行業的業務類型。
我有以下表格:
- 用戶:ID,姓名,...
- 職業:ID,標題,linked_entity_name
- User_Profession:USER_ID,profession_id, entity_id
如果行業沒有鏈接到實體,則表User_Profession中的實體ID將爲零。
這種方法在網站表格標準化,性能和數據搜索方面是否有效?
實體可能有或沒有關係的最佳實踐是什麼?
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`fullName` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `profession` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(100) NOT NULL,
`linked_entity_name` varchar(100) NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `user_profession` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL ,
`profession_id` int(11) NOT NULL ,
`entity_id` int(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `kitchen` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`kitchen_name` varchar(100) NOT NULL,
`kitchen_origin` varchar(100) NOT NULL,
`kitchen_desc` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
SQLFiddle:http://sqlfiddle.com/#!9/ece75
'用戶&職業'之間的關係的基數是什麼?如果「一對多」,那麼我認爲最好的做法是像你一樣保留一張單獨的桌子。 – 1000111
是的,用戶可以擁有多個專業@ 1000111 – KAD
這意味着什麼:*表中的實體ID將爲零User_Profession,以防專業鏈接到實體* – Drew