# Warum gibt es im Discourse-Datenbank weniger Fremdschlüssel?

**URL:** https://meta.discourse.org/t/why-arent-there-more-foreign-keys-in-the-discourse-database/111359
**Category:** Development
**Created:** [12. März 2019 um 06:39 UTC](https://meta.discourse.org/t/why-arent-there-more-foreign-keys-in-the-discourse-database/111359 "2019-03-12T06:39:59Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![intijk](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/intijk/32/133701_2.png) [@intijk](https://meta.discourse.org/u/intijk)
#### Post date: [12. März 2019 um 06:39 UTC](https://meta.discourse.org/t/why-arent-there-more-foreign-keys-in-the-discourse-database/111359/1 "2019-03-12T06:39:59Z")

</div>

I saw discourse db table schema only has several foreign keys, is there any reason to not use the foreign keys in most tables?

 ![Screenshot%20from%202019-03-11%2023-39-23](https://global.discourse-cdn.com/meta/original/3X/f/c/fcfabf10cece0101983dc6eec11b62ed30957f09.png)

---

<div class="post-metadata">

### Author: ![remy\_dev](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/remy_dev/32/147995_2.png) [@remy\_dev](https://meta.discourse.org/u/remy_dev)
#### Post date: [1. August 2019 um 14:22 UTC](https://meta.discourse.org/t/why-arent-there-more-foreign-keys-in-the-discourse-database/111359/2 "2019-08-01T14:22:16Z")

</div>

Hallo,  
ich komme ins Forum, um nach dem genauen gleichen Thema zu fragen, nachdem ich mir die Tabellen angesehen habe.

---

<div class="post-metadata">

### Author: ![fzngagan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/fzngagan/32/259349_2.png) [@fzngagan](https://meta.discourse.org/u/fzngagan)
#### Post date: [1. August 2019 um 14:25 UTC](https://meta.discourse.org/t/why-arent-there-more-foreign-keys-in-the-discourse-database/111359/3 "2019-08-01T14:25:24Z")

</div>

In meinem begrenzten Wissen wurden die Einschränkungen wahrscheinlich auf Rails-Ebene mit Modellen gehandhabt. Ich würde jedoch gerne mehr dazu erfahren.

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [2. August 2019 um 02:22 UTC](https://meta.discourse.org/t/why-arent-there-more-foreign-keys-in-the-discourse-database/111359/4 "2019-08-02T02:22:42Z")

</div>

Wir beschäftigen uns mit diesem Problem und haben noch keine klare Entscheidung getroffen.

Einige von uns möchten, dass alle Fremdschlüssel in PostgreSQL definiert werden, und sind der Meinung, dass der Nutzen die Risiken hier weit überwiegt. Andere sind der Ansicht, dass eine so drastische Änderung jetzt riskant wäre.

Fremdschlüssel führen zwar zu Einschränkungen in der Datenbank: Wenn beispielsweise die Tabelle `category_users` eine Einschränkung hätte, die besagt, dass `category_id` eine gültige `id` in der Tabelle `categories` sein muss, müssten wir bei jedem Einfügen von Daten in `category_users` dies prüfen. Das verursacht zusätzliche Kosten, und wir haben viele Abhängigkeiten.

Wie auch immer – uns ist dieses Anliegen bewusst.
