1
我的数据库中有两个实体都需要地址。客户可以拥有多个地址。餐厅可以为每个ID设置一个地址。我应该如何组织关系?我目前有地址表引用它所属的用户,但它也可以属于一家餐馆。与两个实体共享地址表
地址:
CREATE TABLE IF NOT EXISTS grabatakeaway.address (
`address_id` int(8) UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
`address` text NOT NULL,
`city` varchar(128) NOT NULL,
`state_province` varchar(128),
`zip_post` varchar(32) NOT NULL,
`username` varchar(32) NOT NULL,
FOREIGN KEY (username) REFERENCES grabatakeaway.user(username)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
用户:
CREATE TABLE IF NOT EXISTS grabatakeaway.user (
`username` varchar(32) NOT NULL PRIMARY KEY,
`password` varchar(128) NOT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
餐厅:
CREATE TABLE IF NOT EXISTS grabatakeaway.restaurant (
`restaurant_id` int(8) UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
`address_id` int(8) UNSIGNED NOT NULL,
FOREIGN KEY (address_id) REFERENCES grabatakeaway.address(address_id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
餐厅怎么样?一样? –
是的,同样的事情。这创建了多对多的关系,并允许更多的人拥有多个地址。如果你不需要它,请保留它的当前结构。 – e4c5
太好了,谢谢!我会继续实施这个。如果一切都很好,我会将其标记为已回答,欢呼! –