2009-12-18 4 views
4

J'ai une base de données PostgreSQL dont les tables sont réparties entre un certain nombre de schémas. Chaque schéma a un ensemble différent de contrôles d'accès; par exemple, un schéma peut être en lecture seule pour les utilisateurs réguliers, alors qu'ils sont autorisés à créer des tables sur un autre. Les schémas agissent également en tant qu'espaces de noms, de sorte que les utilisateurs n'ont pas à se soucier de dupliquer les tables existantes lorsqu'elles en créent de nouvelles. Je veux créer une configuration similaire en utilisant MySQL. A-t-il un concept équivalent? Si non, comment puis-je le simuler de la façon la plus proche? Je préférerais ne pas utiliser plusieurs bases de données.Quel est l'équivalent MySQL d'un «schéma» PostgreSQL?

Répondre

9

Database devrait être le plus proche.

+1

C'est exact, mais ils ont des inconvénients. Cette base de données est destinée à être déployée sur divers clusters existants. L'utilisation de plusieurs bases de données rend cela plus compliqué, car l'utilisateur qui exécute le déploiement ne peut pas simplement demander à son administrateur de créer une base de données; ils ont besoin des privilèges CREATE DATABASE eux-mêmes. De plus, si je veux conserver mes noms de schéma actuels, je risque de me heurter aux bases de données existantes sur ce cluster. D'où ma préférence pour éviter plusieurs bases de données si cela est possible. – DNS

+1

C'est pourquoi j'ai dit que c'est le plus proche, pas l'équivalent. –

7

Le préfixage des noms de tables est ce que l'on fait avec la plupart des applications MySQL.

+4

Il n'est pas clair pourquoi cela a été downvoted; Étant donné que ma question disait que plusieurs bases de données n'étaient pas souhaitables, cette réponse n'est pas déraisonnable. – DNS

+2

Je ne suis pas le downvoter, mais une supposition: le nom de la table de préfixation n'est pas du tout le même que celui des schémas. Il n'y a aucun moyen de définir des permissions, vous excluez certains noms de tables, les règles de citation sont * complètement * différentes, il n'y a aucun moyen de définir un correctif de recherche, etc, etc, etc. Utiliser une base de données différente en couvre au moins , mais à la fin vous ne pouvez pas le simuler dans un système qui ne l'a pas. –

Questions connexes