创建带有@manytomany和@manytone关系的表

vql8enpb  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(374)

我正在努力创建带有@manytomany和@manytone关系的表。
我必须创建3个表,个人,国家,性别。人与国家关系@许多人与人,性别@许多人。
我的代码正确吗?

CREATE TABLE IF NOT EXISTS `di_person` (
        `id_person` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
        `name` VARCHAR(256) ,
        `last_name` VARCHAR(256) ,
         `additional_info` VARCHAR(256) ,
        `gender_id` VARCHAR (50) UNIQUE REFERENCES di_gender,
        `country_id` VARCHAR (50) UNIQUE REFERENCES di_country
    ) COLLATE='utf8_bin';

-- ----------------------------------------------------- 
-- Table 'gender` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `di_gender` (
         id_gender INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    id_person INT,
    name VARCHAR(50),
    CONSTRAINT tb_fk FOREIGN KEY (id_person) REFERENCES di_person(id_person)
    ) COLLATE='utf8_bin';

-- ----------------------------------------------------- 
-- Table 'country` 
-- ----------------------------------------------------- 

CREATE TABLE IF NOT EXISTS `di_country` (
        `id_country` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
        `name`  VARCHAR(256), 
        `id_person` VARCHAR (10) UNIQUE REFERENCES di_person
    ) COLLATE='utf8_bin';
mbyulnm0

mbyulnm01#

我会说不。人员是唯一的,每个人只能有一个条目。我建议gender应该保留在person中,并且有一个外键引用用于验证目的(我不喜欢enum),但是对于在person表中保留country有点怀疑(稍后会有更多)。性别不应该有身份证,国家也不应该有身份证,否则性别和国家会重复存在。不知道您的数据看起来像什么,我可能会创建一个person\u country连接表,这样一个人就可以与多个国家关联如果永远不会这样,那么亲自持有国家代码(带有外键约束)就可以了。

相关问题