oracle - 唯一键(不是主键)可以是其他表的外键吗?

标签 oracle foreign-keys primary-key unique-key

我有两个表学生和学生简介图片
来自学生的“用户名”是表的唯一键
它被引用为 'studentsprofilepic' 表的外键

表的 DDL 是

CREATE TABLE students (
  id             NUMBER,
  username       VARCHAR2(30),
  password       VARCHAR2(30),
  firstname      VARCHAR2(30),
  lastname       VARCHAR2(40),
  email          VARCHAR2(300),
  dob            VARCHAR2(20),
  alt_email      VARCHAR2(300),
  street_address VARCHAR2(50),
  address_2      VARCHAR2(50),
  city           VARCHAR2(30),
  state          VARCHAR2(30),
  zip            VARCHAR2(10),
  country        VARCHAR2(60),
  telephone      VARCHAR2(10),
  CONSTRAINT student_id_pk PRIMARY KEY (id),
  CONSTRAINT student_username_uk UNIQUE (username)
);

CREATE TABLE studentsprofilepic (
  id       NUMBER,
  photo_id NUMBER,
  photo    BLOB,

  PRIMARY KEY (photo_id),
  FOREIGN KEY (username) REFERENCES students (username)
);

最佳答案

, 外键列与 primary key 建立直接关系 unique key列(引用的键)通常在另一个表中:

CREATE TABLE BOOK(
    BNAME VARCHAR2(10)NOT NULL UNIQUE,
    BTYPE VARCHAR2(10));
CREATE TABLE BOOKS_AUTH(
    A_ID INT NOT NULL,
    BNAME_REF VARCHAR2(10) NOT NULL,
    FOREIGN KEY (BNAME_REF) REFERENCES BOOK (BNAME));

SQLFIDDLE演示

关于oracle - 唯一键(不是主键)可以是其他表的外键吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28527630/

相关文章:

foreign-keys - EF 4.1 Code First 出现无效列名错误

php - 插入到两个具有相关键的不同表中

mysql - 为什么oracle可以update pk=pk+1,而MySQL不能update set pk=pk+1

java - jdbc 连接已建立,但未在 eclipse 控制台中打印结果

php - 外部约束失败

mysql - 查询在mysql中花费了很多时间,但在oracle中却没有

mysql - 创建具有双主外键关系的表时如何修复 "java.sql.SQLException: Cannot add foreign key constraint."

git - 重复 key 错误!但没有重复数据

sql - Oracle中如何检查所有字段是否唯一?

java - SQL异常: inconsistent datatypes: expected TIMESTAMP got NUMBER