两个表的sql server外键分区

dohp0rv5  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(337)

我是数据库新手,不知道分区是如何工作的。我试着理解一些例子,但还是迷路了。我只需要做一个表分区 Persona 把我当作 idUbicacion ,对于每个不同的外键,我需要分区。我很感谢你的帮助

CREATE TABLE Ubicacion
(
    numero int identity(1,1) primary key NOT NULL,
    pais varchar(200) NOT NULL
    provincia varchar(200) NOT NULL,
);

CREATE TABLE Persona
(
    id int identity(1,1) primary key NOT NULL,
    nombre varchar(500),
    cedula int,
    nacionalidad varchar(200),
    idUbicacion int foreign key references Ubicacion(id) NOT NULL
);
6ss1mwsb

6ss1mwsb1#

如果要对表进行分区,则需要定义一个分区键,该键需要包含在主键中。例如(这不是正确的语法,只是一个伪代码):

CREATE TABLE Ubicacion(
    numero int identity(1,1) NOT NULL,
    pais varchar(200) NOT NULL,
    provincia varchar(200) NOT NULL,
    primary key (numero, provincia)
) PARTITION BY provincia;

如果可能,您需要将此额外字段添加到所有外键:

CREATE TABLE Persona(
    id int identity(1,1) primary key NOT NULL,
    nombre varchar(500),
    cedula int,
    nacionalidad varchar(200),
    provincia varchar(200) NOT NULL,
    idUbicacion int NOT NULL,
    foreign key (idUbicacion, provincia) references Ubicacion(id, provincia) 
);

不容易吧?所以我给你两个建议:
不要将主表(维度表)只划分为事实表。
如果您使用分区,那么就不要使用外键。

相关问题