Files
Pf2eDataScrapper/dbml/schema.dbml
T

604 lines
15 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// https://dbml.dbdiagram.io/docs
// Entity
Table entity {
id int [pk]
name varchar [not null, note: "{*}.name"]
img varchar(100) [note: "{*}.img"]
description text [not null, note: "{*}.system.description(.value)"]
description_gm text [null, note: "{*}.system.description.gm"]
type entity_type [not null]
slug varchar
rarity entity_rarity [not null, default: "common", note: "{*}.system.rarity"]
is_translated bool [default: false, note: "Первичный импорт идёт из англоязычного источника, перевод приходит вторым"]
is_checked bool [default: false, note: "Флаг, указывающий, что перевод был проверен вручную и не требует обновления парсером"]
}
Enum entity_type {
feat
}
Enum entity_rarity {
common
uncommon
rare
}
// Alias
Table entity_aliases {
id int [pk, increment]
entity_id int [ref: > entity.id]
alias varchar [not null]
type alias_type [not null]
}
Enum alias_type {
old
english
hobby
}
// Keywords
Table keyword {
id int [pk, increment]
}
Table entity_keywords {
entity_id int [ref: > entity.id]
keyword_id int [ref: > keyword.id]
}
// Sources
TableGroup source_group {
source
entity_sources
}
Table source {
id int [pk, increment]
name varchar
url varchar
}
Table entity_sources {
entity_id int [ref: > entity.id]
source_id int [ref: > source.id]
suffix varchar [default: ""]
}
// External links
TableGroup external_group {
external_target
entity_external
}
Table external_target {
id int
name varchar
icon varchar
}
Table entity_external {
entity_id int [ref: > entity.id]
target_id int [ref: > external_target.id]
path varchar
}
// Traits
TableGroup trait_group {
trait
entity_traits
}
Table trait {
id int [pk]
name varchar [not null]
description text
}
Table entity_traits {
entity_id int [ref: > entity.id]
trait_id int [ref: > trait.id]
}
// ----------------------------------------------
// Action
Table action {
id int [pk, ref: - entity.id]
type action_type [not null, note: "{}.system.actionType.value"]
actions int [null, note: "{}.system.actions?.value"]
category action_category [null, note: "{}.system.category"] // Нет у 81 объекта
death_note bool [null, note: "{}.system.deathNote"]
Note: '''{} = Item.action
Перенаправление:
{}.system.publication -> entity_sources
{}.system.traits -> entity_traits
{}.system.frequency -> ??? Возможно нужно на общую frequency
Рассмотреть:
{}.system.selfEffect
{}.system.duration
{}.system.start - .value всегда 103462347
{}.system.target
Не использованы поля:
{}.system.subfeatures - пишем в описании пока что, потом подключение таблицы
{}.system.actionCategory - всегда пробел???
'''
}
Enum action_type {
action
free
reaction
passive
}
Enum action_category {
offensive
defensive
interaction
familiar
}
// Ancestery
Table ancestry {
id int [pk, ref: - entity.id]
hp int [not null, note: "{}.system.hp"]
reach int [not null, note: "{}.system.reach"]
size ancestry_size [not null, note: "{}.system.size"]
speed int [not null, note: "{}.system.speed"]
vision ancestry_vision [not null, note: "{}.system.vision"]
Note: '''{} = Item.ancestry
Перенаправление:
{}.system.publication -> entity_sources
{}.system.traits -> entity_traits
Рассмотреть:
{}.system.boosts
{}.system.flaws
{}.system.items - TODO добавить в определение dict-типа
{}.system.lanuages
Не использованы поля:
{}.system.additionalLanguages
'''
}
Enum ancestry_size {
med
lanuages
system
tiny
}
Enum ancestry_vision {
normal
low_light_vision // low-light-vision
darkvision
}
// Armor
Table armor {
id int [pk, ref: - entity.id]
ac_bonus int [not null, note: "{}.system.acBonus"]
strength int [null, note: "{}.system.strength"]
check_penalty int [not null, note: "{}.system.checkPenalty"]
dex_cap int [not null, note: "{}.system.dexCap"]
speed_penalty int [not null, note: "{}.system.speedPenalty"]
bulk float [not null, note: "{}.system.bulk"]
category armor_category [not null, note: "{}.system.category"]
group armor_group [null, note: "{}.system.group"] // 16 без группы
level int [not null, note: "{}.system.level.value"]
price int [not null, note: "price({}.system.price.value)"]
size armor_size [not null, note: "{}.system.size"]
Note: '''{} = Item.armor
Перенаправление:
{}.system.publication -> entity_sources
{}.system.traits -> entity_traits
Рассмотреть:
{}.system.base_item - возможно связь на себя
{}.system.material
{}.system.runes
{}.system.specific
Не использованы поля:
{}.system.containerId - пустое
{}.system.hardness - всегда 0
{}.system.hp - всегда 0
{}.system.quantity - всегда 1
'''
}
Enum armor_category {
light
heavy
medium
light_barding // light-barding
heavy_barding // heavy-barding
unarmored
}
Enum armor_group {
leather
plate
wood
chain
cloth
skeletal
composite
}
Enum armor_size {
med
lg
}
// Background
Table background {
id int [pk, ref: - entity.id]
Note: '''{} = Item.background
Перенаправление:
{}.system.publication -> entity_sources
{}.system.traits -> entity_traits
{}.system.items -> background_items
{}.system.trainedSkills -> background_skills
Рассмотреть:
{}.system.boosts
Не использованы поля:
'''
}
Table background_items {
id int [pk]
background_id int [ref: > background.id]
entity_id int [ref: > entity.id, note: "{}.name"]
level int [note: "{}.level"]
name string [note: "{}.name (?)"]
Note: "{} = Item.background.system.items"
}
Table background_skills {
id int [pk]
background_id int [ref: > background.id]
name varchar [note: "{}.[]"]
is_skill bool [note: "true = [value] false = [lore]"]
Note: "{} = Item.background.system.items.[lore|value]"
}
// Backpack
Table backpack {
id int [pk, ref: - entity.id]
level int [note: "{}.system.bulk.level.value"]
capacity int [note: "{}.system.bulk.heldOrStowed"]
heldOrStowed float [note: "{}.system.bulk.heldOrStowed"]
ignored int [note: "{}.system.bulk.ignored"]
value float [note: "{}.system.bulk.value"]
hardness int [note: "{}.system.bulk.hardness"]
quantity int [note: "{}.system.bulk.quantity"]
price int [note: "price({}.system.price.value)"]
size varchar [note: "{}.system.bulk.size (always med)"]
stowing bool [note: "{}.system.stowing"]
usage
Note: '''{} = Item.backpack
Перенаправление:
{}.system.publication -> entity_sources
{}.system.traits -> entity_traits
Рассмотреть:
{}.system.material
Не использованы поля:
{}.system.collapsed - всегда false
'''
}
Enum backpack_usage {
wornbackpack
held_in_two_hands // held-in-two-hands
worn
held_in_one_hand // held-in-one-hand
worngarment
}
// Campaign Feature
Table campaign_feature {
id int [pk, ref: - entity.id]
level int [note: "{}.system.level"]
type action_type [note: "{}.system.actionType"]
action int [note: "{}.system.actions"]
category campaign_feature_category [note: "{}.system.category"]
Note: '''{} = Item.campaignFeature
Перенаправление:
{}.system.publication -> entity_sources
{}.system.traits -> entity_traits
Рассмотреть:
{}.system.prerequisites - очень странная структура,
но, похоже, просто одиночное value
Не использованы поля:
{}.system.requirements - всегда пустое
{}.system.trigger - всегда пустое
'''
}
Enum campaign_feature_category {
army_tactic // army-tactic
army_war_action // army-war-action
kingdom_activity // kingdom-activity
kingdom_feat // kingdom-feat
kingdom_feature // kingdom-feature
}
// Class
Table class {
id int [pk, ref: - entity.id]
hp int [note: "{}.system.hp"]
perception int [note: "{}.system.perception"]
spellcasting bool [note: "{}.system.spellcasting"]
Note: '''{} = Item.class
Перенаправление:
{}.system.publication -> entity_sources
{}.system.traits -> entity_traits
{}.system.ancestryFeatLevels -> class_progression
{}.system.classFeatLevels -> class_progression
{}.system.generalFeatLevels -> class_progression
{}.system.items -> class_progression
{}.system.skillFeatLevels -> class_progression
{}.system.skillIncreaseLevels -> class_progression
{}.system.attacks.[!other] -> class_trainings
{}.system.defenses -> class_trainings
{}.system.savingThrows -> class_trainings
Рассмотреть:
{}.system.keyAbility
{}.system.attacks.other
Не использованы поля:
'''
}
Table class_progression {
id int [pk, increment]
class_id int [ref: > class.id]
level int
type class_progression_type
entity_id [null, ref: > entity.id]
}
Table class_trainings {
id int [pk, increment]
class_id int [ref: class.id]
item varchar [note: "Возможно нужна связь с чем-то ещё"]
stage: int [note: "0-untrained, 1-trained..."]
}
Enum class_progression_type {
entity [note: "{}.system.items"]
ancestry_feat [note: "{}.system.ancestryFeatLevels"]
class_feat [note: "{}.system.classFeatLevels"]
general_feat [note: "{}.system.generalFeatLevels"]
skill_feat [note: "{}.system.skillFeatLevels"]
skill_increase [note: "{}.system.skillIncreaseLevels"]
}
// Condition
Table condition {
id int [pk, ref: - entity.id]
group condition_group
Note: '''{} = Item.condition
Перенаправление:
{}.system.publication -> entity_sources
{}.system.traits -> entity_traits
Рассмотреть:
duration
overrides
references - всегда пустое
value
Не использованы поля:
'''
}
Enum condition_group {
senses
abilities
death
attitudes
detection
}
// Deity
Table deity {
id int [pk, ref: - entity.id]
category deity_category
Note: '''{} = Item.deity
Перенаправление:
{}.system.publication -> entity_sources
{}.system.traits -> entity_traits
attribute -> deity_attribute
skill -> deity_skills
spells -> deity_spells
weapons -> deity_weapons
Рассмотреть:
domains - нужная другая таблица?
font
sanctification
Не использованы поля:
'''
}
Table deity_attributes {
deity_id int [pk, ref: > deity.id]
attribute varchar(3) [pk]
}
Table deity_skills {
deity_id int [pk, ref: > deity.id]
skill varchar [pk]
}
Table deity_spells {
id int [pk, increment]
deity_id int [ref: > deity.id]
level int
spell_id int [ref: > spell.id]
}
Table deity_weapons {
id int [pk, increment]
deity_id int [ref: > deity.id]
weapon varchar
}
Enum deity_category {
deity
pantheon
covenant
philosophy
}
// Feat
Table feat {
id int [pk, ref: - entity.id]
action_type feat_action_type [note: "{}.system.actionType.value"]
actions int [null, note: "{}.system.actions?.value"]
category feat_category [not null, note: "{}.system.category"]
level int [not null, note: "{}.system.level.value"]
level_taker int [null, note: "{}.system.level.taken"] // Всего 2 значения: 1, 2
max_takable int [null, note: "{}.system.level.maxTakable"]
location varchar(12) [null, note: "{}.system.level.location"]
only_level_1 bool [null, note: "{}.system.onlyLevel1"]
Note: '''{} = Item.feat
Перенаправление:
{}.system.publication -> entity_sources
{}.system.traits -> entity_traits
{}.system.frequency -> feat_frequency
Рассмотреть:
{}.system.prerequisites
{}.system.selfEffect
{}.system.duration
{}.system.start - .value всегда 103462347
{}.system.target
Не использованы поля:
{}.system.subfeatures - пишем в описании пока что, потом подключение таблицы
{}.system.actionCategory - всегда пробел???
'''
}
Enum feat_action_type {
passive
action
reaction
free
}
Enum feat_category {
ancestryfeature
classfeature
calling
class
skill
general
ancestry
bonus
deityboon
curse
pfsboon
}
Table feat_frequency {
feat_id int [pk, ref: > feat.id]
max int [not null, note: "{Item.feat}.system.frequency.max"]
per int [not null, note: "{Item.feat}.system.frequency.per"]
value int [null, note: "{Item.feat}.system.frequency.value - что это вообще?!"]
}
// Heritage
Table heritage {
id int [pk, ref: - entity.id]
ancestry_id [null, ref: > ancestry.id]
Note: '''{} = Item.heritage
Перенаправление:
{}.system.publication -> entity_sources
{}.system.traits -> entity_traits
Рассмотреть:
Не использованы поля:
'''
}
// Spell
Table spell {
id int [pk, ref: - entity.id]
cost int [note: "{}.system.cost"]
Note: '''{} = Item.spell
Перенаправление:
{}.system.publication -> entity_sources
{}.system.traits -> entity_traits
Рассмотреть:
Не использованы поля:
'''
}
/*
Table template {
id int [pk, ref: - entity.id]
Note: '''{} = Item.
Перенаправление:
{}.system.publication -> entity_sources
{}.system.traits -> entity_traits
Рассмотреть:
Не использованы поля:
'''
}
*/
// consumable -> equipment?
// effect???
// equipment
// kit
// shield -> equipment