J'ai de la difficulté à normaliser les données d'un flux RSS dans une base de données. Chaque message aurait id
et categories
.Organisation et normalisation Flux RSS Catégories de données
Le problème que j'ai est que categories
est une liste qui n'est pas prédéfinie en taille. En 1FN je diviser une liste de telle sorte que chaque colonne ne dispose que des données atomiques:
+----+----------+
| id | name |
+----+----------+
| 1 | flying |
| 2 | swimming |
| 3 | throwing |
| 4 | sleeping |
| 5 | etc |
+----+----------+
Cependant, les messages de blog peut avoir plus d'une catégorie étiquetée. Cela signifie que la table posts
peut avoir une liste d'identifiants des catégories marquées.
Sinon, la table categories
peut avoir deux ids:
+----+--------+----------+
| id | postId | name |
+----+--------+----------+
| 1 | 1 | flying |
| 2 | 1 | swimming |
| 3 | 1 | throwing |
| 4 | 2 | flying |
| 5 | 2 | swimming |
| 6 | 2 | etc |
+----+--------+----------+
Et la table posts
id
fera référence la colonne postId
. Cependant, il y a des données répétées, ce qui n'est pas bon.
Enfin, une autre méthode que je l'avais pensé était de mettre toutes les catégories dans une table:
+----+--------+----------+----------+----------+-----+
| id | flying | swimming | throwing | sleeping | etc |
+----+--------+----------+----------+----------+-----+
| 1 | 1 | 1 | 1 | 1 | 1 |
| 2 | 0 | 1 | 0 | 0 | 0 |
| 3 | 1 | 1 | 0 | 0 | 1 |
| 4 | 0 | 0 | 1 | 1 | 1 |
+----+--------+----------+----------+----------+-----+
1
s représentant présents et 0
s représentant absent, le id
dans les références tableau posts
id
. Cette méthode n'aurait pas de données répétées. Cependant, les catégories des blogs peuvent être créées à volonté, ce qui rend difficile la maintenance d'une telle table car je devrais la mettre à jour chaque fois qu'il y a une nouvelle catégorie.
Comment mettre ma base de données en 3NF, en éliminant les répétitions tout en maintenant la maintenance?
Vous n'expliquez pas clairement vos tables. Aussi, ne voulez-vous pas dire que la table "alternate categories" postId fait référence à l'id de la table Posts, et non l'inverse; et l'ID de la dernière table fait référence à l'ID de la table Posts, et non l'inverse? (Peut-être que les lignes dans les deux sont 1: 1 avec des lignes dans Posts?) ("Références" signifie "ne peut jamais avoir des valeurs qui apparaissent dans".) S'il vous plaît: 1. Donnez un nom unique à chaque table. 2. Donnez un exemple de tableau Posts. 3. Utilisez "références" dans la bonne direction. 4. Par ma réponse, pour chaque table * donne le prédicat (modèle de phrase parmétérisé par colonnes) qui est transformé en une véritable déclaration par des lignes dans celui-ci *. – philipxy