我想在一个表中创建一个外键,它将指向其他值的集合。MYSQL:外键可以包含一个集合吗?
例如我想做一个父表和一个子表。而每个家长应该包含全部他的孩子,并且每个孩子都应该包含他的父母。
所以我的问题是我可以在MySQL中做到这一点?如果可以,我该怎么做,否则我可以用什么方法;
我想在一个表中创建一个外键,它将指向其他值的集合。MYSQL:外键可以包含一个集合吗?
例如我想做一个父表和一个子表。而每个家长应该包含全部他的孩子,并且每个孩子都应该包含他的父母。
所以我的问题是我可以在MySQL中做到这一点?如果可以,我该怎么做,否则我可以用什么方法;
如果我理解正确的话,这只是一个外键关系:
create table children as (
childId int auto_increment primary key,
parentId int not null,
. . .
constraint fk_children_parent foreign key (parentId) references parents(parentId)
);
这样就能够满足你的两个requiremens:
如果你想为父母的孩子,你这样做:
select parentId, group_concat(childId) as children
from children
group by parentId;
一个外键定义了一个列(或列的集合),强制执行两个表之间的关系。数据库服务器负责执行这种关系以确保准确的数据。外键的模型定义由一个父(主)表组成,该表包含一组独特的数据,然后在子(外部)表中引用该数据。
有关完整的解释来看看这个:http://www.sparxsystems.com/enterprise_architect_user_guide/12.1/database_engineering/foreignkeys.html
如果您正在使用关系数据库管理系统(SQL)的任何味道,你需要重新制定您的要求进行收集,家长和儿童以实体和关系的语言。 https://en.wikipedia.org/wiki/Entity%E2%80%93relationship_model然后,创建表与您的实体和fks一起定义您的关系会容易得多。 –
编辑你的问题,并提供一个使用数据的例子。 –
你好,欢迎来到StackOverflow,ykaner。您介意绘制某种ASCII艺术图,向我们展示您正在处理的数据? –