[SQL] 빈 SQL 테이블 퍼키이 있습니까? 모든 SQL 테이블합니까?
SQL빈 SQL 테이블 퍼키이 있습니까? 모든 SQL 테이블합니까?
나는 SQL에서 용어 "퍼키는"무엇의 약자인지 안다,하지만 난 특정 일을 이해할 수없는 내가 도움을 부탁합니다.
데이터가없는 테이블에서 퍼키가?
모든 테이블에서 의지가 항상 하나의 존재?
해결법
-
==============================
1.TL; DR "퍼키"는 용어 RM (관계형 데이터 모델)이다. SQL의 표준 사용은 없습니다. SQL 테이블의 superkeys 합리적으로 비공식적으로 당신은 아마 기본 키 또는 고유 NOT NULL 플러스를 선언 할 수있는 열 세트라고 할 수있다 {} 테이블은 대부분 하나의 행에 보유 할 때 (당신이 그것을 선언 할 수 있지만). SQL 테이블이 없습니다 "합리적으로 비공식적으로"때문에 RM 관계. 테이블이 다음 중복 행없이 널 (null)을 보유하지 않는 경우 그러나 우리는 합리적이 관계이며, 그 모든 관계처럼, 그것은 하나 이상의 superkeys을 가지고 말할 수 있습니다. 현재 값이 superkeys이 무엇인지에 영향을주지 않도록 기본 관계 또는 관계 표현의 수 퍼키의 정의는, 계정이 가질 수있는 모든 가능한 값으로한다. 퍼키의 정의에 따라, 빈 관계 값 속성의 모든 부분 집합은 퍼키이다.
TL; DR "퍼키"는 용어 RM (관계형 데이터 모델)이다. SQL의 표준 사용은 없습니다. SQL 테이블의 superkeys 합리적으로 비공식적으로 당신은 아마 기본 키 또는 고유 NOT NULL 플러스를 선언 할 수있는 열 세트라고 할 수있다 {} 테이블은 대부분 하나의 행에 보유 할 때 (당신이 그것을 선언 할 수 있지만). SQL 테이블이 없습니다 "합리적으로 비공식적으로"때문에 RM 관계. 테이블이 다음 중복 행없이 널 (null)을 보유하지 않는 경우 그러나 우리는 합리적이 관계이며, 그 모든 관계처럼, 그것은 하나 이상의 superkeys을 가지고 말할 수 있습니다. 현재 값이 superkeys이 무엇인지에 영향을주지 않도록 기본 관계 또는 관계 표현의 수 퍼키의 정의는, 계정이 가질 수있는 모든 가능한 값으로한다. 퍼키의 정의에 따라, 빈 관계 값 속성의 모든 부분 집합은 퍼키이다.
관계형 "퍼키"
수학 「관계」의 하나의 의미는 테이블 형 로우 같은 값 목록이다 "튜플"의 집합이다. 그것은 관계 (선박) / 연결을 나타냅니다. "RM"의 "R"이 용어는 "관계형 데이터베이스는"출처 인에서 오는 곳이다. (커드 1970) (2,015 일) 유사하게 "ERM」(개체 - 관계 모델) 관계 / 연관으로"관계 "에서 온다. RM 컨텍스트에서 (첸 1976)는 "관계"의 테이블 형이지만 일반적으로 "특성"이름 및 값 쌍의 집합 인 "튜플"의 세트를 보유하고있다. (아니면 수학 관계 또는 혼합 수 있습니다.) "퍼키"두 RM 감각이있다 - 관계의 가치 및 관계 변수 또는 식의. 관계 값의 수 퍼키는 관계가 그 부분 터플 두 개의 행을 포함하지 않는 속성의 집합입니다. 관계 변수 또는 표현식의 수 퍼키 모든 상황 / 상태로 그 부분 터플 두 개의 행을 포함하지 않는 속성의 집합입니다. 그래서 변수가 저장할 수있는 모든 값이 퍼키가 특정 퍼키가 있습니다.
(게시 된 학술 교과서의 정의를 찾아보십시오. 정의를 말할 때 "모든가"또는 이름 값 "모든"그들이 그러한 값이없는 경우 이러한 조건이 만족되는 것을 의미하는 것을 참고. 마찬가지로 때 "에 대한 몇 가지"& 그들은 이름이 반드시 다른 값을 이름 것을 의미하지 않는다라는 이름의 값을 참조 "(들)이 존재한다.")
빈 값은 퍼키 같은 속성의 모든 부분 집합이 발생합니다. 현재 값이 superkeys이 무엇인지에 영향을주지 않도록 변수를 포함하는 변수 또는 표현식의 수 퍼키의 정의는, 고려가로 평가 될 수있는 모든 가능한 값을 사용합니다.
모든 관계는 하나 또는 그 이상의 superkeys이있다 : 모든 속성의 세트 퍼키 그래서 모든에 대한 부분 터플의 값이 한 번 가장에 나타납니다 속성 때문에 튜플의 값이 한 번 가장에 나타납니다 그래서 관계는 튜플의 집합을 보유하고 있습니다.
관계형 대 SQL
SQL 테이블은 관계 없습니다. 그것은 허용 중복 및 널 (null)와 수학 및 속성 관계의 혼란을 연상이다. 그래서 SQL 데이터베이스는 "관계"라고하지만 그들은 가난 RM 구현된다.
때문에 관계에 SQL 테이블의 유사의, 관계를 포함하는 용어는 엉성 테이블에 적용받을. 당신이 용어를 빌려하고 SQL의 의미를 줄 수 있지만 그러나 (값, 테이블, 퍼키, CK를, PK, FK는 가입하고, 술어, NF는 정상화 등), 당신은 단지 그 단어에 대한 그 SQL의 의미를 대체 할 수 RM 정의, 정리 또는 알고리즘과 분별 또는 실제 무언가를 얻을. 또한 RM의 개념의 SQL 프리젠 테이션은 거의 사실 만큼은 SQL 데이터베이스에 RM의 개념을 적용하는 방법을 알려하지 않았다. 그들은 단지 용어에 대한 SQL의 의미의 사용이 일이 무의미하거나 유효하지 않게 여부를 잊기 RM 프리젠 테이션, 앵무새. (I 희망 때문에 "거의"몇 가지가 있습니다.)
당신이 "테이블"에 의해 "관계"를 교체하는 경우 (중복 및 / 또는 허용 널) 특정 RM의 수 퍼키 정의에서 다음 당신은 열 집합 만족 기본 키 또는 고유 NOT NULL 제약 조건으로 SQL의 퍼키에 대한 정의를 얻을. 기타 특정 RM의 수 퍼키의 정의는 당신이 얻을 그 세트 플러스 {} 테이블은 대부분 하나의 행에 보유 할 때. (이후 "식별"모든 행.) (당신은 아마 만 2 스타일의 말씨를 사용하지만 그것이 첫번째 스타일의 말씨가 무엇을 정의 생각하는 사람들을 발견 할 것이다. 그리고 그들이 용어를 잘못 해석하여 정의를 오용하는 알 수 없습니다. ) 일부는 제한 조건 정의를 사용할 수 있습니다. 당신은 "영국"세 가지의 당 사용 (고유 키)를 찾을 수 있습니다.
테이블이도 중복 행이나 널 (null)을 보유하고 때 우리는 속성과 튜플 및 열 등의 행과 함께 관계로 해석 할 수 있습니다. 그럼 우리가 합리적으로 테이블의 superkeys이 관계의 superkeys 말할 수 있습니다.
PS : CKs의 (후보 키)와 "CK"하지 혼동 superkeys. 재 생은 작지 퍼키를 포함하는 퍼키이다. (따라서, CK가 "최소"또는 "기약"퍼키이다.)이 관계는 여러 superkeys 및 CKs의을 가질 수있다. PK가 (기본 키) PK되도록 선택 CK 일부이다. 우리는 우리가 SQL의 CK를 호출 할 수 있는지, 최소한 하나 필요하지 않은 SQL의 퍼키를 호출 할 수도 있지만 어떤 SQL 기본 키 및 고유하지 null을 선언합니다. 당신은 SQL 컨텍스트에서 "PK"를들을 때 그래서 당신은 "(SQL 퍼키) 열 목록은 기본 키를 통해 선언"을 의미 및 / 또는 "(어쩌면 어쩌면 기본 키를 통해 선언되지 않음) 구별 SQL의 퍼키"인지 알아 내야 / 또는 "구별 SQL의 CK (최소 SQL의 퍼키)". 그리고 당신은 항상 무엇을 "키"수단을 요청해야합니다. (보통, SQL의 퍼키, 어떤 것을 의미한다.)
PS : "관계 (배)"는 "관계"& "관계"의 각각 무엇을 의미하는 바로 받기 - 협회? 표? FK (외래 키)? RM 데이터베이스 (변수 또는 표현) 모든 관계 값의 관계 (배) / 연관을 나타낸다. 그러나 "관계"(때로는, "관계")도 FK에 대한 (부동의 방법으로) 사용 (MIS)이다 -가 아니라 RM 또는 ERM에서하지만, 의사 RM & -ERM 방법에서 그 잘못 해석 / 오해 / 잘못을 누구의 뿌리를 선행한다. (불행하게도 데이터베이스 산업에서 매우 가난한 RM 교육이 있습니다.) FKS, PK와, CKs의, superkeys 및 다른 제약 질의 및 갱신에 필요하지 않습니다. (그들은 무결성을위한 것입니다.)
-
==============================
2.퍼키는 단순히 고유 레코드를 식별 컬럼의 열 또는 그룹입니다. 이러한 직원 테이블의 직원 수있다.
퍼키는 단순히 고유 레코드를 식별 컬럼의 열 또는 그룹입니다. 이러한 직원 테이블의 직원 수있다.
from https://stackoverflow.com/questions/46024902/does-an-empty-sql-table-have-a-superkey-does-every-sql-table by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL 함수 - 계승 (0) | 2020.05.16 |
---|---|
[SQL] SQLSTATE는 [42S22] : 열을 찾을 수 없습니다 : 1054 알 수없는 열 - Laravel (0) | 2020.05.16 |
[SQL] SELECT 목록에서 별칭 다른 곳에서 참조 (0) | 2020.05.16 |
[SQL] 동적 열 플러스 컬럼 이름 UNPIVOT (0) | 2020.05.16 |
[SQL] XMLNS와 OPENXML : DT (0) | 2020.05.16 |