我是 php 和 sql 的新手,我正在构建一个小游戏来学习更多后者。
这是我的三个表的简单数据库:
-- *********** SIMPLE MONSTERS DATABASE
CREATE TABLE monsters (
monster_id VARCHAR(20),
haunt_spawn_point VARCHAR(5) NOT NULL,
monster_name VARCHAR(30) NOT NULL,
level_str VARCHAR(10) NOT NULL,
creation_date DATE NOT NULL,
CONSTRAINT monster_id_pk PRIMARY KEY (monster_id)
);
-- ****************************************
CREATE TABLE spawntypes (
spawn_point VARCHAR(5),
special_tresures VARCHAR (5) NOT NULL,
maximum_monsters NUMBER NOT NULL,
unitary_experience NUMBER NOT NULL,
CONSTRAINT spawn_point_pk PRIMARY KEY (spawn_point)
);
-- ****************************************
CREATE TABLE fights (
fight_id NUMBER,
my_monster_id VARCHAR(20),
foe_spawn_point VARCHAR(5),
foe_monster_id VARCHAR(20) NOT NULL,
fight_start TIMESTAMP NOT NULL,
fight_end TIMESTAMP NOT NULL,
total_experience NUMBER NOT NULL
loot_type NUMBER NOT NULL,
CONSTRAINT my_monster_id_fk FOREIGN KEY (my_monster_id)
REFERENCES monsters (monster_id),
CONSTRAINT foe_spawn_point_fk FOREIGN KEY (foe_spawn_point)
REFERENCES spawntypes (spawn_point),
CONSTRAINT fight_id_pk PRIMARY KEY (fight_id)
);
鉴于这些数据,我如何轻松执行这两项任务:
1)我想创建一个pl/sql函数,它只传递一个fight_id作为参数并给定foe_spawn_point(在战斗表内)返回与这个参考spawntypes表的生成点相关的unitary_experience,我该怎么做? :-/ [f(x)]
为了计算从一场战斗中获得的总经验(unitary_experience * fight_length),我创建了一个函数,给定一场特定的战斗,它将用fight_start减去fight_end,所以现在我知道战斗持续了多长时间。[f(y)]
2)在数据库填充任务期间是否可以使用这两个函数(乘以它们返回的结果)?
插入战斗值(....,f(x)* f(y),'战利品A');
为了填充战斗表中的所有 total_experience 条目?
谢谢您的帮助