Eléphant du PHP |
332 Messages
22 août 2006, 11:53
Je ne sais pas comment ça se passe avec Sybase, mais il n'y a pas de raison que ce soit très différent d'Oracle. Les schémas, ce sont les "utilisateurs" de ta base : le code et le mot de passe qui servent à te logger. Il est possible d'avoir des utilisateurs différents sur une base de données, chacun ayant ses propres tables.
Par défaut, ces tables ne sont visibles que par l'utilisateur connecté : USER1 ne voit que les tables crées par USER1, USER2 celles crées par USER2, ... Mais il est possible par un système de droits que USER1 donne une visibilité en lecture et/ou écriture sur ses propres tables (ordres GRANT).
Concernant le nom de champ unique ou pas : il y a effectivement deux écoles
Code : Tout sélectionner
UTILISATEUR CLIENT
----------- ------
ID ID
NOM NOM
ou
UTILISATEUR CLIENT
----------- ------
ID_UTIL ID_CLIENT
NOM_UTIL NOM_CLIENT
Dans le cas d'une jointure clé primaire-clé secondaire, la seconde méthode permet d'avoir un nom de champ identique entre la table fille et la table mère.
Code : Tout sélectionner
CLIENT FACTURE
------ -------
ID_CLIENT ID_FACTURE
NOM_CLIENT TTC_FACTURE
ID_CLIENT
Personnellement, je trouve cette répétition du nom de la table dans les champs lourde et inutile. Je travaille beaucoup avec des requêtes qui se ressemblent et si je n'ai qu'à changer que le nom de la table, c'est quand même vachement plus simple. Par exemple :
function get_geographie ($table) {
$sql = "SELECT A.CODE, B.CODEINSEE, B.LIBELLE
FROM COMPOSITIONTERRITOIRE A, $table B
WHERE A.TERRITOIRE_ID = ?
AND A.CODE = B.CODEINSEE
ORDER BY B.LIBELLE";
...
}
get_geographie ('COMMUNE');
get_geographie ('CANTON');
...
Quant aux clés primaires/secondaires, je préfixe la clé secondaire avec le nom de la table primaire. AMC Designor préfère effectivement quand les deux champs portent le même nom (cela lui permet de faire le lien automatiquement), mais tant pis.