스키마와 테이블 및 데이터베이스의 차이점은 무엇입니까?


155

이것은 아마도 n00blike (또는 더 나쁜) 질문 일 것입니다. 그러나 나는 항상 스키마를 데이터베이스에서 테이블 정의로 보았습니다. 이것은 잘못되었거나 완전히 정확하지 않습니다. 데이터베이스 과정에서 많이 기억하지 못합니다.


3
오라클 스키마에서는 사용자를 참조합니다. 즉, 사용자를 만들 때 스키마가 생성됩니다. 이제 테이블, 뷰, 인덱스 패키지 등을 추가 할 수 있습니다.
Ali786

답변:


242

스키마 : 데이터베이스 : 테이블 :: 평면도 ::


81
조금 비밀 스럽지만 잘못은 아닙니다. 자칭 n00b가 그걸 이해한다고 생각하십니까?
Stein G. Strindhaug

6
좋은 비유입니다. 스키마에는 단순한 테이블 이상이 있으며 파란색 인쇄에는 배선과 난방 및 배관이 포함되어 있으므로 "평면도"를 "청색 인쇄"로 변경합니다.
Paul Tomblin

4
"스키마"는 실제로 "계획"을 의미합니다. 전체 데이터베이스 또는 하나의 테이블이나 뷰를 참조하는 데 사용되는 것을 보았습니다.
MusiGenesis

@ 폴 : 좋은 지적. 원래는 "청사진"을 작성했지만 실제로 "집"(최소한은 아님)을 의미하지 않기 때문에 변경했습니다.
MusiGenesis

4
그러나 저는 Oracle에서 스키마를 사용자로 보는 경향이 있습니다. 따라서 정의는 db마다 다릅니다. : D How annoying.
Robert

123

관계 스키마는 테이블의 논리적 정의입니다 - 그것은 테이블의 이름이 무엇인지 정의 및 각 컬럼의 이름과 유형입니다. 계획이나 청사진과 같습니다. ㅏ데이터베이스 스키마는 전체 데이터베이스에 대한 관계 스키마의 모음입니다.

테이블 스키마에 의해 정의 된 속성을 가지고 각각의 행 (일명 "튜플")의 무리와 함께 구조입니다. 테이블에는 특정 열의 값을 찾는 데 도움이되는 인덱스가있을 수도 있습니다.

데이터베이스는 , 공식적으로, 데이터의 모음입니다. 이와 관련하여 데이터베이스는 테이블 모음입니다. DBMS (데이터베이스 관리 시스템) 관리하고 데이터베이스를 실행 (등 MySQL은, SQL 서버, 오라클 같은) 소프트웨어입니다.


1
데이터베이스 스키마에는 인덱스, 뷰 등도 포함됩니다.
Paul Tomblin

1
확실히 이것은 정확하지 않습니다. 데이터베이스는 이와 같은 테이블 모음이 아닙니다. 예를 들어 하나의 테이블없이 30 개의 데이터베이스를 가질 수 있습니다.
Robert

@Robert-테이블이없는 데이터베이스가있는 시점은 무엇입니까?
Paul Tomblin

16
테이블이 없더라도 여전히 테이블 모음입니다. 테이블 모음입니다.
Jon Skeet

1
@Ian : 데이터베이스에도 참조 제한 조건 (1 차 키, 외래 키), 고유성 제한 조건 및 점검 제한 조건이 있습니다. 트리거 및 프로 시저가 포함될 수도 있습니다.
Jonathan Leffler

16

간단히 말해서 스키마는 전체 데이터베이스에 대한 정의이므로 테이블, 뷰, 저장 프로 시저, 인덱스, 기본 및 외래 키 등이 포함됩니다.


12

이 특정 게시물은 Oracle에만 관련된 것으로 나타 났으며 다른 DB와 관련하여 스키마 정의가 변경되었습니다.

아마도 구글에 약간의 문제가 있지만 FYI 용어는 가장 성가신 정의에 따라 다릅니다. :)

Oracle에서 데이터베이스는 데이터베이스입니다. 머릿속에서 이것을 데이터 파일 및 리두 로그 및 데이터베이스 자체의 디스크에있는 실제 물리적 존재 (인스턴스 아님)로 생각하십시오.

스키마는 사실상 사용자입니다. 보다 구체적으로 사용자가 소유 한 테이블 / 프로 시저 / 인덱스 등의 집합입니다. 다른 사용자는 다른 스키마 (자신이 소유 한 테이블)를 가지고 있지만 사용자는 선택한 권한을 가진 스키마를 볼 수도 있습니다. 따라서 데이터베이스는 수백 개의 스키마와 각 스키마 수백 개의 테이블로 구성 될 수 있습니다. 동일한 데이터베이스에있는 다른 스키마에 동일한 이름을 가진 테이블을 가질 수 있습니다.

테이블은 데이터를 포함하는 행과 열의 집합 인 테이블이며 스키마에 포함됩니다.

예를 들어 SQL Server에서 정의가 다를 수 있습니다. 나는 이것을 모른다.


11

스키마는 OOP 세계에서 볼 수 있듯이 부모 개체처럼 보입니다. 데이터베이스 자체가 아닙니다. 어쩌면 이 링크는 유용합니다.

그러나 MySQL에서는 두 가지가 동일합니다. 키워드 DATABASE 또는 DATABASES는 나타날 때마다 SCHEMA 또는 SCHEMAS로 바꿀 수 있습니다. 예 :

  • 데이터베이스 생성 <=> 스키마 생성
  • 데이터베이스 표시 <=> 스키마 표시

MySQL의 문서

SCHEMA 및 DATABASE 용어는 DBMS에 따라 다릅니다.

테이블은 수평 행 (이름에 의해 식별된다)의 수직 열 모델을 이용하여 구성되어, 데이터 요소 (값)의 집합이다. 데이터베이스에는 하나 이상의 (보통) Table이 포함 됩니다. 그리고이 테이블에 데이터를 저장합니다. 테이블은 서로 관련 될 수 있습니다 ( 여기 참조 ).


귀중한 답변
sofs1 1

2

스키마에 대한 추가 정보 :

SQL 2005에서 스키마는 개체를 그룹화하는 방법입니다. 객체를 넣을 수있는 컨테이너입니다. 사람들은이 개체를 소유 할 수 있습니다. 스키마에 대한 권한을 부여 할 수 있습니다.

2000 년에 스키마는 사용자와 동등했습니다. 이제는 무료로 깨졌으며 매우 유용합니다. 모든 사용자 프로세스를 특정 스키마에, 관리자 프로세스를 다른 스키마에 던질 수 있습니다. 적절한 사용자 / 역할에게 EXECUTE를 부여하면 특정 절차에 대해 EXECUTE를 부여하게됩니다. 좋은.

도트 표기법은 다음과 같습니다.

Server.Database.Schema.Object

또는

myserver01.Adventureworks.Accounting.Beans


2

A Schema는 논리적 구조도 포함하는 데이터베이스 객체의 모음입니다. 소유 한 사용자의 이름이 있습니다. A database는 여러 스키마를 가질 수 있습니다. 데이터베이스에서 하나의 테이블이 동일한 이름의 서로 다른 두 스키마에 나타날 수 있습니다. 사용자는 선택 권한이 할당 된 모든 스키마를 볼 수 있습니다.


2

MusiGenesis가 대부분의 데이터베이스에서 이렇게 멋지게 배치 한 것처럼 :

스키마 : 데이터베이스 : 테이블 :: 평면도 : 집 : 방

그러나 Oracle에서는 다음을 생각하기가 더 쉬울 수 있습니다.

스키마 : 데이터베이스 : 테이블 :: 소유자 : 집 : 방


2

위의 답변 중 일부와 달리 다음은 각각의 경험을 바탕으로 한 이해입니다.

  • MySQL : database/schema :: table
  • SQL 서버 : database :: (schema/namespace ::) table
  • 신탁: database/schema/user :: (tablespace ::) table

Oracle에서 테이블 공간이 선택적인지 아닌지에 대해 수정하십시오. 테이블 공간 사용을 기억 한 지 오래되었습니다.


1

Oracle에서 Schema는 하나의 데이터베이스에서 한 명의 사용자이고, 예를 들어 scott는 데이터베이스 orcl에서 하나의 스키마입니다. 하나의 데이터베이스에는 scott와 같은 많은 스키마가있을 수 있습니다.


1

데이터베이스에는 하나 이상의 명명 된 스키마가 포함되며이 스키마에는 테이블이 포함됩니다. 스키마에는 데이터 유형, 함수 및 연산자를 포함한 다른 종류의 명명 된 객체도 포함됩니다. 충돌없이 다른 스키마에서 동일한 객체 이름을 사용할 수 있습니다. 예를 들어 schema1과 myschema 모두 mytable이라는 테이블을 포함 할 수 있습니다. 데이터베이스와 달리 스키마는 엄격하게 분리되지 않습니다. 사용자는 자신이 연결된 데이터베이스의 스키마에있는 개체에 액세스 할 수 있습니다 (권한이있는 경우).

스키마를 사용하려는 몇 가지 이유가 있습니다.

많은 사용자가 서로 간섭하지 않고 하나의 데이터베이스를 사용할 수 있도록합니다.

데이터베이스 개체를보다 쉽게 ​​관리 할 수 ​​있도록 논리 그룹으로 구성합니다.

타사 응용 프로그램은 별도의 스키마에 넣어 다른 개체의 이름과 충돌하지 않습니다.

스키마는 스키마를 중첩 할 수 없다는 점을 제외하고 운영 체제 레벨의 디렉토리와 유사합니다.

공식 문서는 https://www.postgresql.org/docs/9.1/ddl-schemas.html을 참조 하십시오.


0

스키마에는 데이터베이스가 포함됩니다.

데이터베이스는 스키마의 일부입니다.

따라서 스키마> 데이터베이스.

스키마는 뷰, 저장 프로 시저, 데이터베이스, 트리거 등을 포함합니다.


0

스키마는 전체 데이터베이스에 대한 계획이 아닙니다. 데이터베이스 내부의 객체 하위 집합 (예 : 테이블)에 대한 계획 / 컨테이너입니다.

이것은 동일한 기능 범주에 속하지 않는 하나의 데이터베이스 내에 여러 객체 (예 : 테이블)를 가질 수 있다고 말합니다. 따라서 다양한 스키마로 그룹화하고 다른 사용자 액세스 권한을 부여 할 수 있습니다.

즉, 여러 스키마에서 하나의 테이블을 가질 수 있는지 확실하지 않습니다. Management Studio UI는 테이블에 스키마를 할당하는 드롭 다운을 제공하므로 하나의 스키마 만 선택할 수 있습니다. TSQL로 수행하면 다른 객체 ID로 2 개 (또는 여러 개의) 다른 객체가 생성 될 수 있습니다.


0

데이터베이스 스키마 는 테이블, 뷰, 저장 프로 시저 등과 같은 개체를 논리적으로 그룹화하는 방법입니다. 스키마를 개체의 컨테이너로 생각하십시오. 그리고 테이블은 행과 열의 모음입니다. 모든 테이블의 조합은 db를 만듭니다.


1
그 첫 번째 문장은 똑같은 ....입니다 stackoverflow.com/a/29042133/2308683
OneCricketeer
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.