mysql实体属性_如何透视MySQL实体 - 属性 - 值模式

如何透视MySQL实体 - 属性 - 值模式

我需要设计存储文件所有元数据的表(即文件名,作者,标题,创建日期)和自定义元数据(用户已添加到文件中,例如CustUseBy,CustSendBy)。无法预先设置自定义元数据字段的数量。实际上,确定在文件中添加了什么和多少自定义标记的唯一方法是检查表中存在的内容。

为了存储它,我创建了一个基表(具有文件的所有公共元数据),一个Attributes表(包含可以在文件上设置的附加,可选属性)和一个FileAttributes表(为文件的属性赋值)。

CREAT TABLE FileBase (

id VARCHAR(32) PRIMARY KEY,

name VARCHAR(255) UNIQUE NOT NULL,

title VARCHAR(255),

author VARCHAR(255),

created DATETIME NOT NULL,

) Engine=InnoDB;

CREATE TABLE Attributes (

id VARCHAR(32) PRIMARY KEY,

name VARCHAR(255) NOT NULL,

type VARCHAR(255) NOT NULL

) Engine=InnoDB;

CREATE TABLE FileAttributes (

sNo INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,

fileId VARCHAR(32) NOT NULL,

attributeId VARCHAR(32) NOT NULL,

attributeValue VARCHAR(255) NOT NULL,

FOREIGN KEY fileId REFERENCES FileBase (id),

FOREIGN KEY attributeId REFERENCES Attributes (id)

) Engine=InnoDB;

样本数据:

INSERT INTO FileBase

(id,      title,  author,  name,        created)

VALUES

('F001', 'Dox',   'vinay', 'story.dox', '2009/01/02 15:04:05'),

('F002', 'Excel', 'Ajay',  'data.xls',  '2009/02/03 01:02:03');

INSERT INTO Attributes

(id,      name,            type)

VALUES

('A001', 'CustomeAttt1',  'Varchar(40)'),

('A002', 'CustomUseDate', 'Datetime');

INSERT INTO FileAttributes

(fileId, attributeId, attributeValue)

VALUES

('F001', 'A001',      'Akash'),

('F001', 'A002',      '2009/03/02');

现在问题是我想以这样的方式显示数据:

FileId, Title, Author, CustomAttri1, CustomAttr2, ...

F001    Dox    vinay   Akash         2009/03/02   ...

F002    Excel  Ajay

什么查询会生成此结果?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值