# Datasets, semantic model et bindings

## Datasets

### Fonctionnel
Un dataset est un objet central. Phase 1 : chaque dataset contient ses attributs, mesures, champs calculés et semantic model local.

### Technique

```txt
Dataset
  └── Semantic Model
        ├── Attributes
        ├── Measures
        ├── Calculated Fields
        ├── Hierarchies
        └── Relationships
```

Pas de semantic layer globale au départ.

## Future semantic layer

### Fonctionnel
À terme, possibilité de mutualiser certaines mesures / attributs.

### Technique
Ne pas coupler les dashboards directement aux colonnes physiques. Prévoir field IDs stables, logical bindings et mapping couche dataset vers future semantic layer.

## Dashboards multi-datasets

### Fonctionnel
Un dashboard pourra utiliser plusieurs datasets simultanément.

### Technique

```txt
Dashboard
  datasets[]
  datasetLinks[]
  widgets[]
```

## Liens entre datasets dans un dashboard

### Fonctionnel
Relations configurables : champ unique, liens composés, plusieurs objets de chaque dataset.

### Technique

```txt
DashboardDatasetLink
  sourceDatasetId
  targetDatasetId
  mappings[]
  cardinality
  joinBehavior
```

## Data bindings logiques

### Fonctionnel
Les widgets et dashboards ne doivent pas pointer directement vers des colonnes physiques.

### Technique

```txt
logicalFieldId
 → datasetFieldId
```

Plus tard :

```txt
logicalFieldId
 → semanticLayerFieldId
```
