属性可以不是列,而是行记录。
Person表和对象属性表一对多。
类别表和类别属性表一对多。
UPDATE Person SET 类别='金刚' WHERE id=123--插入金刚有而美国大兵没有的属性
INSERT INTO 对象属性表(person_id,属性id,value)
SELECT 123,属性id,默认值
FROM 类别属性表
WHERE 类别='金刚'
AND NOT EXISTS(SELECT *
FROM 对象属性表
WHERE person_id = 123
AND 属性id = 类别属性表.属性idid)--插入美国大兵有而金刚没有的属性
DELETE 对象属性表
WHERE person_id = 123
AND NOT EXISTS(SELECT *
FROM 类别属性表
WHERE 类别='金刚'
AND 属性id = 对象属性表.属性idid)
Person表和对象属性表一对多。
类别表和类别属性表一对多。
UPDATE Person SET 类别='金刚' WHERE id=123--插入金刚有而美国大兵没有的属性
INSERT INTO 对象属性表(person_id,属性id,value)
SELECT 123,属性id,默认值
FROM 类别属性表
WHERE 类别='金刚'
AND NOT EXISTS(SELECT *
FROM 对象属性表
WHERE person_id = 123
AND 属性id = 类别属性表.属性idid)--插入美国大兵有而金刚没有的属性
DELETE 对象属性表
WHERE person_id = 123
AND NOT EXISTS(SELECT *
FROM 类别属性表
WHERE 类别='金刚'
AND 属性id = 对象属性表.属性idid)
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货