Чим відрізняється схема і таблиця від бази даних?


155

Це, мабуть, питання n00blike (або гірше). Але я завжди розглядав схему як визначення таблиці в базі даних. Це неправильно або не зовсім правильно. Я мало пам’ятаю своїх курсів по базі даних.


3
У схемі oracle якраз посилається на користувача. Тобто , коли ми створюємо користувача схема буде створена тепер ми можемо додати таблиці, уявлення, індекси пакетів і т.д. , як
Ali786

Відповіді:


242

схема : база даних : таблиця :: план поверху : будинок : кімната


81
Трохи вибагливий, але не помиляється; але ти справді думаєш, що самопроголошений n00b зрозумів би це?
Штейн Г. Стріндгауг

6
Гарна аналогія. Я б змінив "план поверху" на "блакитні відбитки", оскільки на схемі є більше, ніж просто таблиці, а сині відбитки містять електропроводку та опалення та сантехніку.
Пол Томблін

4
"Схема" насправді просто означає "план". Я бачив, як він посилався на всю базу даних, або лише на одну таблицю чи представлення.
MusiGenesis

@Paul: хороші моменти. Я спочатку писав "креслення", але змінив його, оскільки він насправді не конотує "будинок" (як мінімум, не для мене).
MusiGenesis

4
Так, я схильний розглядати схему як користувача в Oracle. Тож визначення навіть варіюються від db до db: D Як дратує.
Роберт

123

Схема відношення є логічним визначенням таблиці - вона визначає, що називається таблицею, і що таке ім'я та тип кожного стовпця. Це як план чи план. Схема бази даних - це набір схем відношень для цілої бази даних.

Таблиця являє собою структуру з купою рядків ( так званий «кортежів»), кожен з яких має атрибути , визначені в схемі. Таблиці також можуть мати на них індекси, які допоможуть шукати значення в певних стовпцях.

База даних формально - це будь-який збір даних. У цьому контексті база даних буде сукупністю таблиць. АСУБД (система управління базами даних) є програмне забезпечення (наприклад , MySQL, SQL Server, Oracle і т.д.) , яка управляє і керує базою даних.


1
Схема бази даних також включає в себе індекси, перегляди тощо
Пол Томблін

1
напевно це не правильно. база даних не є сукупністю таблиць як такої. Ви можете мати 30 баз даних, не маючи, наприклад, однієї таблиці.
Роберт

@Robert - який би був сенс мати базу даних без будь-яких таблиць у ній?
Пол Томблін

16
Навіть якщо у вас немає таблиць, це все-таки колекція таблиць - це порожня колекція таблиць.
Джон Скіт

1
@Ian: не забувайте, що база даних також матиме обмеження - референтні обмеження (первинні ключі, зовнішні ключі), унікальні обмеження та перевіряють обмеження. Це також може включати тригери та процедури.
Джонатан Леффлер

16

У двох словах, схема - це визначення для всієї бази даних, тому вона включає таблиці, представлення даних, збережені процедури, індекси, первинний та зовнішній ключі тощо.


12

Показано, що саме ця публікація стосується лише Oracle та визначення схеми змінюється в контексті іншої БД.

Напевно, це якась річ просто гугл, але терміни FYI, як видається, відрізняються у своїх визначеннях, що є найбільш прикрою справою :)

В Oracle база даних - це база даних. У голові думайте про це як про файли даних та повторні журнали та про фактичну фізичну присутність на диску самої бази даних (тобто не про екземпляр)

Схема є ефективно користувачем. Більш конкретно, це набір таблиць / прок / індексів тощо, що належать користувачеві. Інший користувач має іншу схему (таблиці, якими він / вона володіє), однак користувач також може бачити будь-які схеми, на яких вибрав привілейовані права. Отже база даних може складатися з сотень схем, а кожна схема - сотні таблиць. Ви можете мати таблиці з однаковим іменем в різних схемах, які знаходяться в одній базі даних.

Таблиця - це таблиця, набір рядків і стовпців, що містять дані, і міститься у схемах.

Наприклад, визначення SQL Server може бути різним. Я цього не знаю.


11

Схема поводиться, схоже, на батьківський об'єкт, як це спостерігається у світі OOP. тому це не сама база даних. можливо, це посилання корисне.

Але, у MySQL два рівносильні. Ключове слово DATABASE або DATABASES можна замінити на SCHEMA або SCHEMAS, де б воно не з’явилося. Приклади:

  • СТВОРИТИ ДАННУ <=> СТВОРИТИ СХЕМУ
  • ПОКАЖНІТЬ ДАНІ <AS> СХЕМИ

Документація MySQL

Терміни SCHEMA & DATABASE залежать від СУБД.

Таблиця являє собою набір елементів даних (значень) , який структурований з використанням моделі вертикальних колонок (які ідентифіковані за їх імені) і горизонтальними рядами. База даних містить одну або кілька (зазвичай) таблиць . І ви зберігаєте свої дані в цих таблицях. Таблиці можуть бути пов’язані між собою ( Дивіться тут ).


цінна відповідь
sofs1

2

Детальніше про схеми:

У SQL 2005 схема є способом групування об'єктів. Це контейнер, в який можна помістити предмети. Люди можуть володіти цим об’єктом. Ви можете надати права на схему.

У 2000 році схема була еквівалентною користувачеві. Тепер він вийшов з ладу і є дуже корисним. Ви можете кинути всі свої користувацькі програми в певну схему, а адміністратори - на іншу. Надайте EXECUTE відповідному користувачеві / ролі, і ви закінчите з наданням EXECUTE за певними процедурами. Приємно.

Нотація крапок піде так:

Server.Database.Schema.Object

або

myserver01.Adventureworks.Accounting.Beans


2

A Schema- це сукупність об'єктів бази даних, яка включає і логічні структури. У ньому є ім’я користувача, який йому належить. Схема databaseможе мати будь-яку кількість схем. Одна таблиця з бази даних може відображатися у двох різних однойменних схемах. Користувач може переглядати будь-яку схему, для якої йому було призначено привілей вибору.


2

Як так добре сказано в MusiGenesis, у більшості баз даних:

схема: база даних: таблиця :: план поверху: будинок: кімната

Але в Oracle може бути простіше думати:

схема: база даних: таблиця: власник: будинок: кімната


2

Всупереч деяким вищевказаним відповідям, ось моє розуміння, засноване на досвіді з кожним із них:

  • MySQL: database/schema :: table
  • SQL Server: database :: (schema/namespace ::) table
  • Oracle: database/schema/user :: (tablespace ::) table

Виправте мене, будь ласка, простір таблиць необов’язковий чи Oracle чи ні, минуло давно, як я пам’ятаю їх використання.


1

У схемі oracle один користувач під однією базою даних, наприклад, скотт - одна схема в базі даних orcl. В одній базі даних у нас може бути багато схем, як скотт


1

База даних містить одну або декілька названих схем, які, в свою чергу, містять таблиці. Схеми також містять інші види іменованих об'єктів, включаючи типи даних, функції та оператори. Те саме ім'я об'єкта може використовуватися в різних схемах без конфлікту; наприклад, і schema1, і myschema можуть містити таблиці, названі mytable. На відміну від баз даних, схеми не розділені жорстко: користувач може отримати доступ до об'єктів у будь-якій із схем бази даних, до якої він підключений, якщо він має права на це.

Є кілька причин, через які можна використовувати схеми:

Дозволити багатьом користувачам використовувати одну базу даних, не заважаючи один одному.

Організувати об’єкти бази даних в логічні групи, щоб зробити їх більш керованими.

Сторонні програми можуть бути розміщені в окремі схеми, щоб вони не стикалися з іменами інших об'єктів.

Схеми є аналогами каталогів на рівні операційної системи, за винятком того, що схеми не можуть бути вкладені.

Офіційну документацію можна посилати https://www.postgresql.org/docs/9.1/ddl-schemas.html


0

Схеми містять Бази даних.

Бази даних є частиною схеми.

Отже, схеми> бази даних.

Схеми містять перегляди, збережені процедури, бази даних, тригер (и) тощо.


0

Схема не є планом для всієї бази даних. Це план / контейнер для підмножини об'єктів (ex.tables) всередині бази даних aa.

Це означає, що всередині однієї бази даних можна мати кілька об'єктів (наприклад, таблиці), які не підпадають під одну функціональну категорію. Таким чином, ви можете згрупувати їх за різними схемами та надати їм різні права доступу користувачів.

Це означає, що я не впевнений, чи можна мати одну таблицю за кількома схемами. Користувацький інтерфейс управління Studio Studio дає спадне меню, щоб призначити схему таблиці, і, отже, дає можливість вибрати лише одну схему. Я думаю, якщо ви зробите це з TSQL, це може створити 2 (або кілька) різних об'єктів з різними ідентифікаторами об'єктів.


0

Схема бази даних - це спосіб логічно групувати об'єкти, такі як таблиці, представлення даних, збережені процедури тощо. Подумайте про схему як про контейнер об'єктів. А таблиці - це колекції рядків і стовпців. поєднання всіх таблиць складає db.


1
Ці перші пропозиції є точно такий же .... stackoverflow.com/a/29042133/2308683
OneCricketeer
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.