gpt4 book ai didi

mysql - 对数据库结构的意见和建议

转载 作者:可可西里 更新时间:2023-11-01 06:50:32 26 4
gpt4 key购买 nike

我正在构建这个用于数据分类的工具。基本上,我会定期接收平面文件中的数据行,如下所示:

a:b:c:d:e
a:b:c:d:e
a:b:c:d:e
a:b:c:d:e

我有一个类别列表可以将这些行分解成,例如:

Original   Cat1  Cat2  Cat3  Cat4  Cat5
---------------------------------------
a:b:c:d:e a b c d e

截至目前,类别名称以及用于分割数据的类别数量都是已知的。但这可能会随着时间的推移而改变(例如,添加/删除的类别...更改的类别总数)。

好的,所以我并不是真的在寻求有关如何解析行或将数据导入数据库或其他任何东西的帮助......我知道如何做所有这些,并且已经编写了大部分核心脚本来处理解析值行并分成可变数量的类别。

我主要是在寻找关于如何构建我的数据库来存储这些东西的建议。所以我一直在考虑,这就是我想出的:

Table: Generated
generated_id int - unique id for each row generated
generated_timestamp datetime - timestamp of when row was generated
last_updated datetime - timestamp of when row last updated
generated_method varchar(6) - method in which row was generated (manual or auto)
original_string varchar (255) - the original string

Table: Categories
category_id int - unique id for category
category_name varchar(20) - name of category

Table: Category_Values
category_map_id int - unique id for each value (not sure if I actually need this)
category_id int - id value to link to table Categories
generated_id int - id value to link to table Generated
category_value varchar (255) - value for the category

基本上我的想法是当我解析一行时,我将在表 Generated 中插入一个新条目,以及在表 Category_Values 中插入一个新条目,但是 X 是目前有很多类别。类别名称存储在另一个表 Categories 中。

我的脚本将立即执行的操作是处理原始值行并将生成的类别值输出到新文件以发送到某个地方。但是后来我有了这个数据库来存储生成的数据,这样我就可以制作另一个脚本,我可以在其中搜索和列出以前生成的值,或者用新值或其他任何内容更新以前生成的条目。

这看起来像是一个不错的数据库结构吗?有什么明显的我遗漏的或可能会欺骗自己的吗?例如,使用这种结构...嗯...我不是 sql 专家,但我认为我应该可以这样做

select * from Generated where original_string = '$string'
// id is put into $id

然后

select * from Category_Values where generated_id = '$id'

...然后我将使用我的数据来获取搜索结果或更改数据的表单...嗯,我相当确定我什至可以将其合并到一个带有连接或其他东西的查询中,但我'我对 sql 不是很好,所以我不知道如何真正做到这一点..但重点是,我知道我可以从这个数据库结构中做我需要的事情..但我是不是让这更难了比它需要的?犯了一些明显的菜鸟错误?

最佳答案

我的建议:

Table: Generated
id unsigned int autoincrement primary key
generated_timestamp timestamp
last_updated timestamp default '0000-00-00' ON UPDATE CURRENT_TIMESTAMP
generated_method ENUM('manual','auto')
original_string varchar (255)

Table: Categories
id unsigned int autoincrement primary key
category_name varchar(20)

Table: Category_Values
id unsigned int autoincrement primary key
category_id int
generated_id int
category_value varchar (255) - value for the category
FOREIGN KEY `fk_cat`(category_id) REFERENCES category.id
FOREIGN KEY `fk_gen`(generated_id) REFERENCES generated.id

链接
时间戳:http://dev.mysql.com/doc/refman/5.1/en/timestamp.html
建表语法:http://dev.mysql.com/doc/refman/5.1/en/create-table.html
枚举:http://dev.mysql.com/doc/refman/5.1/en/enum.html

关于mysql - 对数据库结构的意见和建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6003597/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com