Est une colonne de table de bonne conception?
Il bon pour avoir une table avec une seule colonne? Je sais qu'il n'est pas techniquement illégal, mais est-il considéré comme une mauvaise conception?
EDIT:
Voici quelques exemples:
- Vous avez un tableau avec les 50 valide NOUS des codes d'état, mais vous n'avez pas besoin de stocker l'détaillé des noms d'état.
- Un e-mail de la liste noire.
Quelqu'un a mentionné l'ajout d'un champ de clé. La façon dont je le vois, cette colonne unique SERAIT la clé primaire.
- Je vais avoir un peu de mal à imaginer un cas d'utilisation pour une table avec une seule colonne. Pouvez-vous donner un exemple?
- qu'est-ce que l'une colonne?
- Ouais nous donner un exemple
- mais au moins ne pas créer un Index pour elle !
- NOUS codes d'état sont l'exemple classique de la définition d'un domaine
- J'ai vu une table de base de données utilisé pour contenir une valeur de verrouillage pour une application avant de
- Mon utilisation de ce modèle était de créer des ensembles de données. Chaque enregistrement de la table principale dispose d'un ENSEMBLE de champ. Les enregistrements avec le même ENSEMBLE sont connectés. Comment insérer plusieurs enregistrements avec le même JEU? 'INSÉRER DANS des ensembles de VALEURS ()' et ensuite utiliser le dernier ID inséré votre ID joints aux dossiers. Puis à nouveau, peut-être que je pourrais avoir utilisé des Uuid, mais quelque chose se sent mal à ce sujet.
- Un plus de cas d'utilisation est un indicateur booléen qui est généralement FAUX. Je voudrais créer un tableau avec une colonne qui est à la fois primaire et de clé étrangère.
Vous devez vous connecter pour publier un commentaire.
Oui, c'est certainement une bonne conception pour la conception d'un tableau de manière à le rendre plus efficace. "Les mauvaises SGBDR Design" est généralement centrée autour de l'inefficacité.
Cependant, j'ai constaté que la plupart des cas, de la simple conception de la colonne pourrait bénéficier d'une colonne supplémentaire. Par exemple, des Codes d'État peut généralement avoir le Plein nom de l'État énoncée dans une deuxième colonne. Ou une liste noire peut avoir des notes associées. Mais, si votre design n'a vraiment pas besoin de cette information, alors il est parfaitement normal d'avoir de la seule colonne.
En termes de
relational algebra
ce serait une relation unaire, qui signifie "cette chose existe"Oui, c'est bien d'avoir un tableau de définir une telle relation: par exemple, pour définir un domaine.
Les valeurs d'un tableau doit être naturel clés primaires des cours.
Une table de recherche de
prime numbers
est ce qui me vient à l'esprit en premier.J'ai utilisé dans le passé. L'un de mes clients voulaient auto empêcher quiconque d'essayer de signer avec un numéro de téléphone dans cette grande liste, il avait donc, c'était juste une grosse liste noire.
Si il ya une raison valable pour lui, alors je ne vois pas de problème. Peut-être vous voulez juste une liste de possibilités d'affichage pour une raison quelconque et que vous voulez être en mesure de modifier dynamiquement, mais ils n'ont pas besoin de la relier à une autre table.
Un cas que j'ai trouvé est parfois quelque chose comme ceci:
Table countries_id, ne contient qu'une seule colonne avec IDENTIFIANT numérique pour chaque pays.
Table countries_description, contient la colonne avec les pays de l'ID, une colonne ID de la langue et d'une colonne avec les localisée nom de pays.
Table company_factories, contient des informations pour chaque usine de la société, y compris le pays dans Lequel est situé.
Afin de maintenir la cohérence des données et indépendante de la langue des données dans les tables de la base de données utilise ce schéma avec tables avec une seule colonne pour permettre à des clés étrangères sans langue de dépendances.
Dans ce cas, je pense que l'existence d'une colonne tables sont justifiées.
Édité en réponse au commentaire par: Quassnoi
(source: ggpht.com)
Dans ce schéma, je peux définir une clé étrangère dans la table company_factories qui n'a pas besoin de moi pour y inclure le Langage de la colonne sur la table, mais si je n'ai pas la table countries_id, je dois inclure la Langue de la colonne sur la table pour définir la clé étrangère.
Il y aurait des rares cas où une seule colonne de la table de sens. J'ai fait une base de données où la liste des codes de langue valides était à une seule colonne de la table utilisée comme une clé étrangère. Il n'y a aucun point en ayant une touche différente, étant donné que le code lui-même a été la clé. Et il n'y avait pas fixe description depuis le code de la langue descriptions varient en fonction du langage de certains contextes.
En général, tous les cas où vous avez besoin d'une liste officielle des valeurs qui n'ont pas les attributs supplémentaires est un bon candidat pour une table d'une colonne.
- Je utiliser une seule colonne des tables de tous les temps, selon, bien sûr, que la conception d'application utilise une base de données. Une fois que j'ai enduré la charge de conception de l'établissement d'une connexion de base de données, j'ai mis tous les mutable données dans des tables où c'est possible.
Je pense à deux utilise des tables à colonne unique OTMH:
1) élément de Données existe. Souvent utilisé dans les listes déroulantes. Également utilisé pour la simple légitimité des tests.
Par exemple. deux lettres d'état AMÉRICAIN abréviations, codes postaux que nous expédions à l'; paroles juridique dans Scrabble, etc.
2) Clairsemée attribut binaire, c'est à dire., dans un grand tableau, un attribut binaire qui sera vrai que pour très peu d'enregistrements. Au lieu d'ajouter une nouvelle colonne à valeur booléenne, je pourrais créer un tableau contenant les clés des enregistrements pour lesquels l'attribut est vrai.
Par exemple. les employés qui ont une maladie terminale; les banques avec une année de 360 jours (la plupart des utilisation 365); etc.
-Al.
Pas de problème tant qu'il contient des valeurs uniques.
Plupart du temps, j'ai vu cela dans la recherche des tables de type tels que l'état de la table que vous avez décrit. Cependant, si vous faites cela, assurez-vous de définir la colonne comme clé primaire pour la force de l'unicité. Si vous ne pouvez pas définir cette valeur unique, alors vous ne devriez pas être à l'aide d'une colonne.
Je dirais en général, oui. Pas sûr de savoir pourquoi vous avez juste besoin d'une colonne. Il y a quelques exceptions à ce que j'ai vu utilisé efficacement. Cela dépend de ce que vous essayez d'atteindre.
Ils ne sont pas vraiment une bonne conception lorsque vous êtes en train de penser du schéma de la base de données, mais vraiment ne doit être utilisé que de l'utilité des tables.
J'ai vu les numéros de tables utilisé de manière efficace dans le passé.
Le but d'une base de données est de mettre en relation des éléments d'information les uns aux autres. Comment pouvez-vous faire quand il n'y a pas de données permettant de se rattacher?
C'est peut-être une sorte de tableau de compilation (c'est à dire Prenom + Nom + date de Naissance), bien que je ne suis toujours pas sûr de savoir pourquoi vous voulez le faire.
EDIT: j'ai pu voir à l'aide de ce genre de tableau pour une simple liste de quelque sorte. Est-ce que vous l'utilisez?
Oui, tant que le champ est la clé primaire que vous avez dit. La raison en est que si vous insérez des données en double ces lignes seront en lecture seule. Si vous essayez de supprimer une des lignes qui sont des doublons. il ne fonctionnera pas car le serveur ne savez pas quel ligne à supprimer.
Le seul cas d'utilisation je peux concevoir un tableau de mots peut-être pour un jeu de mot. Vous accéder à la table juste à vérifier qu'une chaîne de caractères est un mot: sélectionner le mot à partir de mots où le mot = ?. Mais il y a beaucoup mieux à des structures de données pour la tenue d'une liste de mots qu'un relationnel base de données.
Contraire, les données dans une base de données est généralement placé dans une base de données pour tirer parti des relations entre les différents attributs des données. Si vos données n'a pas d'attributs au-delà de sa valeur comment ces relations développées?
Ainsi, alors que ce n'est pas illégal, en général, vous ne devriez probablement pas avoir une table avec une seule colonne.
Tous mes tableaux ont au moins quatre domaines de la haute technologie, le numéro de série de la clé primaire, la création et la modification d'horodateurs, et doux supprimer booléenne. Dans toute la liste noire, vous aurez également besoin de savoir qui fait l'ajout de l'entrée. Donc pour moi, la réponse est non, d'une table avec une seule colonne aurait pas de sens, sauf lorsque le prototypage quelque chose.
Oui, c'est parfait. mais un champ ID ne pouvait pas faire de mal non?