我有一张桌子有很多问题。我在一些字段中保存用逗号分隔的数据,后来我无法搜索它们。然后,在搜索网络并找到许多解决方案后,我决定分离一些表。
我有一张桌子,变成了五张桌子。
第一个表名为agendamentos_diarios,这是我将要存储的计划表。
第二个表是名为tecnicos的表,我正在存储技术人员的名字。两个字段,id (主键)和名称(varchar)。
第三个表称为agendamento_tecnico。这是表(链接),我正在存储第一个表和第二个表的id。那是因为有一些日程安排将由一名或多名技术人员参加。
第四张表叫维库洛斯(车辆)。车辆的id和名称(两个字段)。
Fith表是第一个与车辆表之间的连接。同样的事情。我要把时间表和车号都存起来。
我有一个能解释得比我想说的更好的形象。

我做得对吗?是否有更好的方法将数据存储到MySQL?
发布于 2013-12-10 17:30:40
我同意@Strawberry关于is的看法,但通常是Hibernate映射类型来实现这一点。如果您没有使用Hibernate来设计您的表,您应该从agendamento_tecnico和agendamento_veiculos中取出ID。这样你才能获得统一。如果您不想这样做,那么在thoose表上的FK字段上创建一个唯一的键。
我注意到你把车桌和你的技术人员分开了。在您的模型中,同一辆车可以同时处于两个不同的时间表中(这是没有意义的)。如果车辆是连接在agendamento_tecnico表上,这将是更好的,这将变成agendamento_tecnico_veiculo。
在您的桌子上,我注意到(我是巴西人),您有一个名为"servico“的列,意思是服务。您的进度表只设计为一个服务。那么,在相同的时间表上,您有不止一个服务?要解决这个问题,您可以创建一个表服务,并创建一个与计划的m关系。创建一些报告并在数据库中将服务很好地分开将更加容易。
还有一个nome_cliente字段,它表示该计划的客户端。如果您有一个cliente (client)表,并将计划与FK链接起来会更好。
正如前面所说,没有正确的答案。你必须考虑你的问题和它的可能增长。正确地建立数据库模型以后将避免很多麻烦。
发布于 2013-12-10 17:26:42
最好是主观的,没有正确的答案。
我的本能反应是更多地打破那个时间表。看起来技术人员和客户的数据是复制的。
再一次,你可能出于完全合理的理由做出了解除正常的决定。
怀疑你会在这里找到谁不同意你没有逗号分隔的字段。
你要求停止改变的地方现在取决于你的环境。逗号分隔的字段给您带来了一个问题,您处理掉了它们。那么你现在给你带来了什么麻烦呢?
发布于 2013-12-10 17:48:57
看上去不错,尤其是第一次尝试的时候
一个注释:我会在所有表中将PK/FK (Id)命名为相同的,而不是使用'id‘作为名称(另外,我们使用'#’或'_‘作为主/ foreighn键的尾字符:示例technicos.technico_和agendamento_tecnico有字段agend_tech_和technico_。但这不是常识。它使查询更加复杂(因为您必须完全限定字段),但使数据库模式mor可读性(您知道当前wich属于wich )。
其他评论:这两个问话(我以前从没写过这个词!)表、连接technos和agendamento_tecnico都有自己的ID字段,但它们不需要这样做,因为它们所连接的两个表(主/唯一)键是唯一的,因此您可以将它们用作此表的PK,例如:
CREATE TABLE agendamento_tecnico (
technico_ int not null,
agend_tech_ int not null,
primary key(technico_,agend_tech_)
)https://stackoverflow.com/questions/20500555
复制相似问题