我在MySQL中有两个具有相同列的表。有没有办法检测它们之间的变化?

时间:2016-07-12 20:51:00

标签: mysql sql database database-design schema

我有以下表格:

电影

  • title - VARCHAR(255)
  • - VARCHAR(4)
  • 格式 - VARCHAR(255)

movie_custom

  • title - VARCHAR(255)
  • - VARCHAR(4)
  • 格式 - VARCHAR(255)
  • username_id - INT(11)

每个表都有不同的数据,但我想确保某些列名称没有变化。例如,如果我在电影上将 format - VARCHAR(255)更改为 distribution_type - VARCHAR(30),我也想要确保在 movie_custom 上进行相同的更改。

有没有办法在MySQL中确保这一点?不知何故以某种方式将两列连在一起?

2 个答案:

答案 0 :(得分:0)

评论太长了。

听起来你有一个糟糕的数据模型。如果您修复了数据模型,则可以解决问题。

你应该有一个带主键的电影数据库:

create table movies (
    movieId int primary key auto_increment,
    . . .
);

然后,第二个表应该有三列:

create table moviesCustom (
    movieCustomId int primary key auto_increment,
    movieId int not null,
    username_id int,
    constraint foreign key (movieId) references movies(movieId)
);

然后,当您需要两个表中的信息时,请使用join

答案 1 :(得分:0)

计划A

对于title创建规范化表。然后,让[{1}}代替VARCHAR(...)链接到该表。

然后从任何地方(基本或自定义)添加任何标题时,在该表中查找名称以获取ID(或创建新ID)。 / p>

这可能是将数据类型保留在一个位置{(1}}的唯一方法(并安抚戈登)。

但是,过度使用此方法(即以这种方式完成多列)将会降低性能。

建议:将MEDIUMINT UNSIGNED更改为title,因为有这样的数据类型。

计划B

结合两张桌子;使用特殊的year VARCHAR(4)(可能为NULL)作为“基础”条目。